2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Визуализация магнитного зеркала
Сообщение14.07.2021, 15:00 


19/11/20
308
Москва
Решил изучить библиотеку sfml для c++, как первое графическое приложение захотел сделать визуализацию магнитного зеркала. То есть частица влетает в магнитное поле таким образом, что вектор её скорости перпендикулярен вектору магнитной индукции, из-за чего внутри поля она движется по окружности, вылетев из поля под таким же углом, под котором влетела.
Может быть две ситуации: когда частица движется по части окружности, центр которой находится вне поля (для этого варианта у меня всё получилось), когда частица движется по части окружности, центр которой находится внутри поля. Ситуации эти определяются знаком заряда, но не в этом суть.
По идее нужно просто перемещать частицу по окружности, при этом учитывая расположение центра. Также нужно учитывать, что позиция частицы высчитывается от верхнего левого угла окна приложения, из-за чего иногда приходится менять знаки. Вот алгоритм действий для ситуации, когда центр окружности внутри поля (другой вариант у меня вроде как получился):
1. Двигаем частицу до границы, при этом известно расположение границы, модуль скорости и угол наклона вектора скорости по отношению к границе. При этом скорость по осям: $v_x = v\cos{\alpha}$ и $v_y=v\sin{\alpha}$.
2. На границе (на самом деле в области около границы, расстояние от верхнего края области до нижнего равно диаметру частицы) высчитываем начальные условия. При этом представим, что центр координат находится на $x$ составляющей центра окружности и на $y$ составляющей границы поля. Расстояние до центра окружности по $y$ равно $y_r = R \cdot \sin(\pi/2 - \alpha)$ (Значение положительно из-за того, что считаем от левого верхнего угла). Расстояние до частицы по $x$ равно $\sqrt{R^2 - y_r^2}$.
3.Внутри поля разбиваем всё на три этапа (движение по часовой стрелке): небольшой спуск вниз по верхней части окружности, пока не дойдём до $x = R$, далее движение по всей нижней части окружности от $R$ до $-R$, а потом движение по небольшой части верхней части окружности от $-R$ и пока не выйдем из поля.
Распишу только первую часть, так как уже с ней проблемы, если найду ошибку в ней, всё остальное пойдёт легче.
1)Сдвигаем $x$ на небольшой промежуток вправо, получаем, приращение $y$ на этом промежутке (приращение по $x$, как я уже сказал, произвольное).
2)Возвращаем $x$ обратно.
3)С помощью приращений находим смещение по $x$ с учётом того, что скорость постоянная: $v\cdot \cos{\arctg{\frac{\Delta y}{\Delta x}}}$.
3)Смещаем $x$ на найденное смещение.
4)Находим смещение по $y$: $\sqrt{R^2 - x^2}-y_r-y_{old}$, где $y_{old}$ – значение $y$ на предыдущем $x$. Насчёт знака при $y_r$ я не уверен, ну вроде как всё верно: по идее этот знак и знак при корне должны быть разными (у корня отрицательный, у $y_r$положительный), если бы мы были в обычной декартовой системе координат, но у нас отсчёт слева сверху, следовательно они оба меняются. При этом смещение тут почему-то получается отрицательным, хотя на этом участке должно быть положительным. (просто поставить минус пробовал, не работает)
5)смещаем по $y$ на найденное смещение.

Проблема, как мне кажется, со знаками. Но как бы я не пытался – результат далёк от верного.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: confabulez


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group