Моделирование движения частицы в эл.-магн. поле.

Программа моделирования движения заряженной частицы в электрическом и магнитном полях.
Уравнения для определения напряженности поля (векторы E и B):
-постоянное: E=OrtE*E0=const; B=OrtB*B0=const
-линейное: E=OrtE*(E0+El*t); B=OrtB*(B0+Bl*t)
-гармоническое: E=OrtE*(E0+EA*sin(2pi/TE*t)); B=OrtB*(B0+BA*sin(2pi/TB*t))
где:
E, B, OrtE, OrtB - векторы, остальные переменные - скаляры
OrtE, OrtB - единичные векторы, определяющие направление поля
E0, B0 - постоянная составляющая
El, Bl - скорость линейного изменения поля во времени
EA, BA - амплитуда гармонической составляющей
TE, TB - период для гармонической составляющей
Характеристики поля:
-электрическое/магнитное
-вид: отсутствует, постоянное, линейно-изменяющееся, гармонически-осциллирующее
-направление X,Y,Z
-величина или нач. значение (для линейного) или амплитуда (для гармонического)
-скорость изменения (для линейно изменяющегося)
-период (для гармонического)
Моделирование осуществляется с помощью простого метода Эйлера с автоматическим
выбором шага. На каждой итерации в момент времени t осуществляется расчет
в следующей последовательности:
-напряженности электрического и магнитного полей: E=E(t); B=B(t)
-сила Лоренца и ускорение: F(t)=q(E+v*B); a(t)=F/m
-осуществляется проверка величины шага dt так, чтобы при выбранном шаге dt
(на промежутке времени dt) реальное движение можно было заменить с необходимой
и достаточной точностью равноускоренным движением (коррекция шага
осуществляется как в сторону уменьшения, так и увеличения).
-по формуле для изменения скорости расчитывается скорость в след. момент t+dt:
v(t+dt)=v(t)+a*dt (векторное уравнение)
-расчитывается пройденный путь (вектор) за промежуток dt по формуле для
равноускоренного движения и радиус-вектор в момент t+dt:
r(t+dt)=r(t)+v*dt+a*dt^2/2
Все физические величины в программе задаются в системе СИ.
Цвет осей Ox, Oy, Oz соответственно красный (R), зеленый (G) и синий (B).
Управление:
Вращение изображения производится левой кнопкой мыши.
Перемещение - правая кнопка.
Масштаб - колесо, или перемещение мыши с зажатым колесом.
Смещение центра вращения:
-Ctrl+правая кнопка+перемещение мыши (X,Y)
-Ctrl+нажатое колесо+перемещение мыши (Z)