Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Воган Ли - Python для хакеров (Библиотека программиста) - 2023.pdf
Скачиваний:
3
Добавлен:
07.04.2024
Размер:
14.76 Mб
Скачать

194      Глава 6. Победа в лунной гонке с помощью «Аполлона-8»

в реальном времени. Тайминг ключевых событий, таких как срабатывание тяговых двигателей, фотосъемка или сброс зондов, — все предварительно программируются на основе тщательных симуляций.

Рис. 6.15. Гравитационный маневр, полученный за счет значения Vo_X = 520

Итоги

В этой главе вы узнали, как использовать программу рисования turtle, включая создание настраиваемых указателей, а также научились применять Python для симулирования гравитации и решения знаменитой задачи трех тел.

Дополнительная литература

«Apollo 8: The Thrilling Story of the First Mission to the Moon»1 (Henry Holt and Co., 2017), написанная Джеффри Клугером (Jeffrey Kluger), рассказывает об исторической миссии «Аполлона-8», начиная от ее малоперспективного начала и до «невообразимого триумфа».

Онлайн-поиск по запросу «PBS Nova How Apollo 8 left Earth Orbit» должен выдать короткий ролик, на котором показан маневр выхода «Аполлона-8» на транслунную орбиту — первый полет в истории, когда человеку удалось покинуть земную орбиту и долететь до другого небесного тела.

1 Клугер Дж. «“Аполлон-8”. Захватывающая история первого полета к Луне».

Практический проект: симуляция шаблона поисков      195

В «NASA Voyager 1 & 2 Owner’s Workshop Manual» (Haynes, 2015) авторы Кристофер Райли (Christopher Riley), Ричард Корфилд (Richard Corfield) и Филип Доллинг (Philip Dolling) интересно рассказывают о предыстории задачи трех тел и богатом вкладе Майкла Миновича в космические путешествия.

Страница Википедии Gravity assist (https://en.wikipedia.org/wiki/Gravity_assist) содержит много интересных анимаций и исторических примеров их применения, которые можно воссоздать с помощью симуляции «Аполлона-8».

«Chasing New Horizons: Inside the Epic First Mission to Pluto»1 (Picador, 2018), написанная Аланом Стерном (Alan Stern) и Дэвидом Гринспуном (David Grinspoon), рассказывает о важности — и повсеместности — симуляций в миссиях NASA.

Практический проект: симуляция шаблона поисков

В главе 1 мы использовали теорему Байеса, чтобы помочь береговой охране найти потерянного в море моряка. Теперь используем turtle, чтобы спроектировать для вертолета шаблон поиска того же моряка. Предположим, что воздушные наблюдатели могут видеть на 20 пикселей, и сделаем расстояние между длинными отрезками пути равным 40 пикселей (рис. 6.16).

Рис. 6.16. Два скриншота из practice_search_pattern.py

1 Стерн А., Гринспун Д. «За новыми горизонтами. Первый полет к Плутону».

196      Глава 6. Победа в лунной гонке с помощью «Аполлона-8»

Ради интереса добавьте указатель-вертолет так, чтобы при завершении каждого прохода над поверхностью он разворачивался в правильном направлении. Также добавьте указатель для моряка — в случайной позиции, реализуйте остановку симуляции, когда его обнаружат, и опубликуйте радостную новость на экране (рис. 6.17).

Рис. 6.17. Моряк замечен в practice_search_pattern.py (Seaman found – моряк найден!)

Решение под названием practice_search_pattern.py можно найти в приложении к книге. Его цифровую версию, а также указатели для вертолета и моряка я положил в каталог Chapter_6, который можно скачать с сайта книги.

Практический проект: запусти меня!

Перепишите Apollo_8_free_return.py, чтобы движущаяся Луна приближалась к находящемуся в покое CSM, заставляла его начать движение, а затем запускала его вверх и в сторону. Ради интереса сориентируйте указатель CSM так, чтобы он всегда смотрел в направлении полета, как если бы ускорялся самостоятельно (рис. 6.18).

Решение под названием practice_grav_assist_stationary.py находится в приложении, а также доступно для скачивания с https://nostarch.com/real-world-python/.

Практический проект: останови меня!      197

Рис. 6.18. Луна приближается к неподвижному CSM (слева), а затем запускает его к звездам (справа)

Практический проект: останови меня!

Перепишите Apollo_8_free_return.py, чтобы орбиты Луны и CSM пересекались. Пусть CSM проходит перед Луной, и ее гравитация замедляет его движение почти до нуля, а также меняет направление полета на угол около 90 градусов. Как и в предыдущем проекте, пусть CSM смотрит в направлении своего полета (рис. 6.19).

Рис. 6.19. Орбиты Луны и CSM пересекаются, при этом Луна замедляет

и поворачивает CSM