2014 dxdy logo

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

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


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


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



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


19/11/20
307
Москва
Решил изучить библиотеку 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 сообщение ] 

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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