Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет arvi ([info]arvi)
@ 2006-05-30 13:29:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Музыка:Кон-Тики плывёт...

...тем, кто умеет летать!
   В принципе, программы «ОС-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