Музыка: | Кон-Тики плывёт... |
...тем, кто умеет летать!
В принципе, программы «ОС-I» достаточно для орбитальных перелётов. Но в ней станция выглядит точкой, а это справедливо лишь на далёких расстояниях. Чтобы причалить к фантастической окололунной станции «Юрий Гагарин», имеющей форму цилиндра, нужна программа «ОС-II».
Описание, инструкцию и задания к «ОС-II» можно найти в ТМ-1985 №11, а ответы опубликованы в ТМ-1986 №8.
' OC-2
' Публикация: ТМ-1985 N11, ТМ-1986 N8
' Версия для ПМК (c) Михаил Пухов и Сергей Волков
' OC-II v1o
' Публикация: LJR, 30 мая 2006
' Точный перевод на QBasic (c) Илья Васильев
' Распространяется под GPL v2 или старше
DECLARE FUNCTION F00! (X!)
CLS
PRINT " +++ OC-II +++"
PRINT
' Блок ввода исходных данных
PI# = 3.1415926#
' R Р0 Р1 Р2 Р3 Р4 Р5 Р6 Р7 R8 R9 РА РВ РС РД
' V RB T - KS M C RS DM/A AL Y U X MM
' Комплект исходных данных: облёт станции "ЮГ" с ранцевым ракетным двигателем
M = 180: C = 3660: MM = 20: RS = -300: RB = -30
KS = SQR(1.62 / (1738000 + 50000)) * 1738000 / (1738000 + 50000)
X = 0: Y = 300: V = 0: U = 0
' В ОС-2 для экономии памяти начальное H просто обнулялось.
H = ABS(X) + RB
DO
FM = 1
' Блок проверки: положительность высоты
IF H < 0 THEN
H = F00(ABS(Y) + RS)
FM = 2
IF H < 0 THEN
' Блок стыковки
T = H / SQR(U * U + V * V)
PRINT " 1 -00"
FM = 0
END IF
END IF
IF FM THEN
' Рычаги управления
' Не рекомендуется тратить за единичный манёвр больше чем по 100-200 кг
' топлива; длительность маневра с включённым двигателем не должна превышать
' 100 с; при полёте по эллиптической орбите с выключенным двигателем
' не следует оставлять корабль без присмотра больше чем на 200-300 с.
' При работе с программами "ОС-2" и "ОС-3" очень полезно (а на первых порах
' даже необходимо), нарисовав станцию на листе миллиметровки, отмечать на нем
' координаты корабля (или космонавта) после каждого совершённого маневра.
DO
PRINT "Запас топлива:"; MM; "кг",
PRINT "Реактивное ускорение:"; A; "м/с^2"
PRINT "Вертикальная скорость:"; U; "м/с"
PRINT "Горизонтальная скорость относительно продольной оси станции:"; V; "м/с"
PRINT "Вертикальная координата относительно центра станции:"; Y; "м"
PRINT "Горизонтальная координата относительно продольной оси станции:"; X; "м"
IF FM = 1 THEN
PRINT "Расстояние до боковой поверхности станции:"; H; "м"
ELSE
PRINT "Расстояние до ближайшего торца станции:"; H; "м"
END IF
INPUT "угол, градусы; расход топлива, кг; время, с"; AL, DM, T
AL = AL * PI# / 180
' Блок проверки: перерасход топлива
LOOP WHILE DM > MM
' Блок вычисления: реактивное ускорение
MM = MM - DM
A = DM * C / ((M + MM) * T)
END IF
' Рассчётный блок, полностью совместимый с "ОС-2".
' Определяет значения текущих переменных.
T1 = V + T * (A * SIN(AL) - 2 * U * KS)
X = X + T * (V + T1) / 2
V = T1
T1 = U + T * (2 * V * KS + A * COS(AL) + 3 * KS * KS * Y)
Y = Y + T * (U + T1) / 2
U = T1
H = F00(ABS(X) + RB)
LOOP 'Главный игровой цикл
FUNCTION F00 (X)
' Универсальный обнулитель
IF ABS(X) < 1 THEN F00 = 0 ELSE F00 = X
END FUNCTION
Конечно, не все орбитальные станции имеют форму цилиндра. С помощью программы «ОС-III» можно маневрировать в окресностях шарообразных космических станций и садиться на небольшие спутники вроде Фобоса, тяготением которых можно пренебречь.
Сама программа была опубликована в ТМ-1985
№11, а "разбор полёта" на Фобос осуществлён в ТМ-1986
№7.
' OC-3
' Публикация: ТМ-1985 N11, ТМ-1986 N7
' Версия для ПМК (c) Михаил Пухов и Сергей Волков
' OC-III v1o
' Публикация: LJR, 30 мая 2006
' Точный перевод на QBasic (c) Илья Васильев
' Распространяется под GPL v2 или старше
DECLARE FUNCTION F00! (X!)
CLS
PRINT " +++ OC-III +++"
PRINT
' Блок ввода исходных данных
PI# = 3.1415926#
' R Р0 Р1 Р2 Р3 Р4 Р5 Р6 Р7 R8 R9 РА РВ РС РД
' V RO T - KS M C RS DM/A AL Y U X MM
' Комплект исходных данных: посадка Льва Роканиди на Фобос
M = 2250: C = 3660: MM = 1020: RO = 9380000: RS = 11000
KS = SQR(3.72 / RO) * 3394000 / RO
V = 80.1002: U = 28.099953#: X = -13178.22: Y = -2743.2
' В ОС-3 для экономии памяти начальное H просто обнулялось.
H = SQR(X * X + Y * Y) - RS
DO
' Блок проверки: положительность высоты
IF H < 0 THEN
' Блок стыковки
T = H / SQR(U * U + V * V)
PRINT " 1 -00"
ELSE
' Рычаги управления
' Не рекомендуется тратить за единичный манёвр больше чем по 100-200 кг
' топлива; длительность маневра с включённым двигателем не должна превышать
' 100 с; при полёте по эллиптической орбите с выключенным двигателем
' не следует оставлять корабль без присмотра больше чем на 200-300 с.
' При работе с программами "ОС-2" и "ОС-3" очень полезно (а на первых порах
' даже необходимо), нарисовав станцию на листе миллиметровки, отмечать на нем
' координаты корабля (или космонавта) после каждого совершённого маневра.
DO
PRINT "Запас топлива:"; MM; "кг",
PRINT "Реактивное ускорение:"; A; "м/с^2"
PRINT "Вертикальная скорость корабля:"; U; "м/с"
PRINT "Горизонтальная скорость относительно центра станции:"; V; "м/с"
PRINT "Вертикальная координата корабля относительно центра станции:"; Y; "м"
PRINT "Горизонтальная координата относительно центра станции:"; X; "м"
PRINT "Расстояние до поверхности станции:"; H; "м"
INPUT "угол, градусы; расход топлива, кг; время, с"; AL, DM, T
AL = AL * PI# / 180
' Блок проверки: перерасход топлива
LOOP WHILE DM > MM
' Блок вычисления: реактивное ускорение
MM = MM - DM
A = DM * C / ((M + MM) * T)
END IF
' Рассчётный блок, полностью совместимый с "ОС-3".
' Определяет значения текущих переменных.
T1 = V + T * (A * SIN(AL) - 2 * U * KS)
X = X + T * (U * X / RO + (V + T1) / 2)
V = T1
T1 = U + T * (2 * V * KS + A * COS(AL) + 3 * KS * KS * Y)
Y = Y + (U + T1) * T / 2
U = T1
H = F00(SQR(X * X + Y * Y) - RS)
LOOP 'Главный игровой цикл
FUNCTION F00 (X)
' Универсальный обнулитель
IF ABS(X) < 1 THEN F00 = 0 ELSE F00 = X
END FUNCTION
Обычно при старте с орбиты или взлёте с небесного тела (Луны, Марса,..) используют «ОС-I». А для причаливания к спутнику на расстоянии 10-20 км от него переходят на «ОС-II» или «ОС-III». В зависимости от формы спутника.
Буферная программа из ТМ-1985
№11 помогает перейти с «ОС-I» в "режим ближней навигации", пересчитав переменные.
' Буферная программа
' Публикация: ТМ-1985 N11
' Версия для ПМК (c) Михаил Пухов
' OC-BUF v1o
' Публикация: LJR, 30 мая 2006
' Точный перевод на QBasic (c) Илья Васильев
' Распространяется под GPL v2 или старше
CLS
PRINT " +++ Буферная программа +++"
PRINT
' Начальные данные из путешествия Льва Роканиди на Фобос в ТМ-1986 N7
VO = -2137.3807#: RO = 9380000: RR = 9377256.800000001#
V = 79.475129#: X = -13182.076#
' Формулы пересчёта
KS = -VO / RO
V = (V - VO) - KS * RR
X = X * RR / RO
Y = RR - RO
PRINT " 2 - OS-II"
PRINT " 3 - OS-III"
INPUT "К какой программе переходить"; A
IF A = 3 THEN
INPUT "Радиус станции"; RS
PRINT V; "П0 "; KS; "П4 "; RS; "П7 "; Y; "ПА "; X; "ПС"
END IF
IF A = 2 THEN
INPUT "Высота станции"; A
RS = -A / 2
INPUT "Радиус основания"; A
RB = -A
PRINT V; "П0 "; RB; "П1 "; KS; "П4 "; RS; "П7 "; Y; "ПА "; X; "ПС"
END IF