Вход для пользователей

You are here

Алгоритм Кеплера

По наводке Ajaja, начал разбираться с программой Гравилёт.
Алгоритм расчётов для меня оказался достаточно непривычным. Совместить его с реактивным движением в рамках одной программы, как мне кажется, невозможно, поскольку математика оперирует разными сущностями. Алгоритм реактивного движения использует язык ускорений, идёт от скоростей к координатам. Алгоритм Кеплера использует постоянство энергии и момента, и идёт от координат к скоростям, т.е. "наоборот" от стандартного. Ускорения в нём вообще не фигурируют.
Оптимально их сочетать таким образом: при включении двигателя - используем алгоритм лунолётов, при выключенном двигателе - задействуем алгоритм Кеплера.
Для этого необходимы две разные программы, использующие одну и ту же конфигурацию данных в регистрах памяти:

ПО - v горизонтальная
П1 - цикл автопилота
П2 - dt
П3 - вектор тяги
П4 - G
П5 - M сухая
П6 - w (удельный импульс)
П7 - Ro - радиус планеты
П8 - Rос - радиус орбиты спутника
П9 - dm/dt
ПА - r текущий
ПВ - u вертикальная
ПС - угловая координата
ПД - m топлива
ПЕ - сумма t

Все регистры, кроме 3 и 9 - "сквозные". 3 и 9, по сути, служебные, именно их можно задействовать как вспомогательные для расчётов по Кеплеру.

Перелёт с опорной орбиты Земли к Луне будет выглядеть примерно так. В прг.Лунолёт с орбиты разгоняемся до нужной скорости. Загружаем текстовый файл с прг.Кеплер
Летим до границы сферы действия Луны. Меняем содержимое П4, П7 - вместо характеристик Земли теперь центральным телом становится Луна.
Для простоты пересчёта скоростей, желательно делать это, находясь на линии Земля - Луна (угловая координата = 0).
В этом случае u = - u, v = v +/- v Луны
Загружаем прг.Лунолёт, тормозимся и выходим на Лунную орбиту.

Для реализации замысла, нужно
1) переписать программу Гравилет: пересадить данные на нужные регистры, добавить цикл автопилота.
2)переписать программу ОС-1: угловая скорость и расстояние до спутника должны считаться исходя из радиуса орбиты спутника и гравитационной постоянной планеты. автопилот для повторения рутинных операций разгона и торможения.

прг.КЕПЛЕР
00.ПxA	01.Пx7	02.-	03.F√	04.FВх	05.FL1	06.34	07.ПxC	08.Пx8	09.×	
10.Пx4	11.Пx8	12.÷	13.F√	14.Пx0	15.-	16./-/	17.Fѻ	18.KНОП	19.KНОП	
20.KНОП	21.С/П	22.ПxA	23.Пx0	24.5	25.×	26.÷	27.÷	28.K[x]	29.1	
30.+	31.xП1	32.÷	33.xП2	34.ПxE	35.Пx2	36.+	37.xПE	38.Пx2	39.ПxA	
40.÷	41.В↑	42.Fx²	43.ПxB	44.×	45.-	46.Пx0	47.×	48.xП3	49.Пx4	
50.Пx8	51.÷	52.F√	53.Пx8	54.÷	55.Пx2	56.×	57.-	58.ПxC	59.+	
60.Fπ	61.÷	62.K{x}	63.FВх	64.K[x]	65.-	66.Fπ	67.×	68.xПC	69.Пx0	
70.Пx4	71.Пx0	72.ПxA	73.×	74.xПA	75.÷	76.-	77.xП0	78.FВх	79.Пx0	
80.Пx3	81.Fcos	82.×	83.+	84.Пx3	85.Fsin	86.ПxB	87.×	88.-	89.xП0	
90.Fѻ	91.Пx3	92.Fsin	93.×	94.Пx3	95.Fcos	96.ПxB	97.×	98.+	99.xПB	
A0.ПxA	A1.Пx0	A2.÷	A3.xПA	A4.В/О	

Программа моделирует полёты по круговым и эллиптическим орбитам вокруг центрального тела, угловая координата отсчитывается от спутника.
Высоту можно отсчитывать так, как удобно - либо от поверхности, либо от спутника.
Контроль высоты присутствует - при отрицательной высоте происходит останов по адресу 03. После этого необходимо заслать 1 П1 и после В/О С/П посмотреть, где и с какой скоростью произошёл контакт с поверхностью

Регистры:
ПО - v горизонтальная
П1 - цикл автопилота
П2 - dt
П4 - G
П7 - Ro - радиус планеты
П8 - Rос - радиус орбиты спутника
ПА - r текущий
ПВ - u вертикальная
ПС - угловая координата
ПЕ - сумма t

переключатель Р/ГРД необходимо перевести в положение Р (радианы)
Угловая координата изменяется от -180 до +180 и вводится в радианах. Например, для ситуации, когда спутник находится на противоположной стороне планеты,
нужно заслать Fпи в ПС.
После ввода исходных данных, работа начинается традиционным В/О С/П
При останове, в рег.Х - скорость относительно спутника, в рег. Y - расстояние до спутника, отсчитываемое по его орбите, рег Z - высота.
адреса 07-20 используются для расчёта выходных данных, их можно менять под ситуацию, (например, выводить угловую координату ИПС 180 х Fпи / )
- на расчётный блок они влияния не оказывают.
Очередной манёвр задаётся единственным параметром: время С/П
Промежуток времени можно задавать произвольным - программа сравнивает его с характерным временем и при необходимости, разбивает на несколько отрезков и запускает автопилот.
Пробные полёты показали неплохие результаты. Интересно пробовать манёвры сближения со спутником, задавая небольшую корректировку орбитальной скорости "вручую".
Приступаю к следующему этапу - модернизации программы ОС-1...

Метки публикаций: