| |||
![]()
|
![]() ![]() |
![]()
Гляди в оба -- впереди Фобос! Игровая программа «ОС-I» относится к классу сложных в обращении. Чтобы совершать перелёты на орбитальные станции или между ними, необходимо пройти "школу первоначального обучения пилотажу" на «Лунолёте-I» и «Лунолёте-II». Опыт, приобретённый на «Лунолёте-III», также бесценен. В чём отличие от третьего Лунолёта? «ОС-I» выводит на экран расстояние в прямоугольной системе координат с центром в орбитальной станции. Т.к. орбитальная станция постоянно вращается, ваши перемещения в её окресностях выглядят весьма замысловато. Пока никто не "присобачил" к «ОС-I» графический вывод, ЦУП ТМ рекомендует летать с миллиметровкой. Отмечая на листочке положение вашего космического корабля после каждого манёвра. С помощью «ОС-I» можно повторить первую часть отважного путешествия Льва Роканиди с марсианской станции «Джонотан Свифт» на Фобос из ТМ-1986 №7. Это задание было дано в ТМ-1985 №11, а сама программа впервые опубликована в ТМ-1985 №10. ' OC-1 ' Публикация: ТМ-1985 N9, ТМ-1986 N6 ' Версия для ПМК (c) Михаил Пухов и Сергей Волков ' OC-I v1o ' Публикация: LJR, 28 мая 2006 ' Точный перевод на QBasic (c) Илья Васильев ' Распространяется под GPL v2 или старше DECLARE FUNCTION F00! (X!) CLS PRINT " +++ OC-I +++" PRINT ' Блок ввода исходных данных PI# = 3.1415926# U = 0: M = 2250: C = 3660: MM = 3500: R = 3394000: RR = R + 300000 RO = 9380000: VO = -SQR(3.72 / RO) * R V = SQR(3.72 / RR) * R + VO X = -15000000 H = RR - R DO ' Блок проверки: положительность высоты IF H < 0 THEN DO ' Посадочный блок T = -(RR - R) / U PRINT " 1 -00" GOSUB P LOOP WHILE ABS(H) < .001 H = 0 END IF ' Рычаги управления ' Расход топлива при манёвре не должен превышать 5% от полной массы корабля ' (для лунолётов класса "Кон-Тики" это составляет 100-200 кг, в зависимости ' от наличного запаса топлива). ' Не рекомендуется также задавать время манёвра больше 100 с. Последнее ' ограничение снимается лишь в свободном полёте, после выхода на орбиту; ' но и в этом случае следует анализировать ситуацию хотя бы каждые 1000 с. DO PRINT "Расстояние до центра планеты:"; RR; "м" PRINT "Горизонтальная скорость относительно поверхности планеты:"; V - VO; "м/с" PRINT "Запас топлива:"; MM; "кг", PRINT "Реактивное ускорение:"; A; "м/с^2" PRINT "Высота полёта:"; H; "м", PRINT "Вертикальная скорость:"; U; "м/с" PRINT "Горизонтальная скорость относительно станции:"; V; "м/с" PRINT "Горизонтальная координата относительно станции:"; X; "м" PRINT "Расстояние по вертикали до орбиты космической станции:"; RR - RO; "м" INPUT "угол, градусы; расход топлива, кг; время, с"; AL, DM, T AL = AL * PI# / 180 ' Блок проверки: перерасход топлива LOOP WHILE DM > MM ' Блок вычисления: реактивное ускорение MM = MM - DM A = DM * C / ((M + MM) * T) GOSUB P LOOP 'Главный игровой цикл P: ' "Припев" ' Определяет значения текущих переменных. ' Рассчётный блок, полностью совместимый с "ОС-1". T1 = F00(((VO - V) * U / RR + A * SIN(AL)) * T + V) X = X + (((T1 + V) / 2 - VO) * RO / RR + VO) * T V = T1 T1 = F00(U + ((VO - V) * (VO - V) / RR + A * COS(AL) - VO * VO * RO / (RR * RR)) * T) RR = RR + (U + T1) * T / 2 U = T1 H = RR - R RETURN FUNCTION F00 (X) ' Универсальный обнулитель IF ABS(X) < 1 THEN F00 = 0 ELSE F00 = X END FUNCTION |
|||||||||||||
![]() |
![]() |