Главная » Хабрахабр » Неуловимый Космический Пират: спрячься в холодильнике от копов, победи в войне дроидов и плюнь Саурону в глаз

Неуловимый Космический Пират: спрячься в холодильнике от копов, победи в войне дроидов и плюнь Саурону в глаз

Автор статьи, который вдохновил меня на этот пост, утверждал мир, в котором некая система из спутников будет настолько всевидяща, что запишет все объекты в солнечной системе вплоть до космического мусора диаметром не более 1 сантиметра.

Не только запишет, но будет отслеживать траекторию каждой песчинки в режиме реального времени и при малейшем отклонении от курса бить тревогу и поднимать сухопутных крыс в боевую стойку.

Напротив, мы рассмотрим – как ее сделать. Не буду говорить, что такая система невозможна.

Немного о механике небесных тел

Ньютоновская астромеханика представляет из себя дискретную систему из двух точек с произвольными массами. Не стану вдаваться в тонкости расчета путем последовательного приближения, скажу только, что на современных компьютерах в режиме реального времени это очень легкая задача.

Почему тогда астрономы Нила Деграсса не смогли правильно рассчитать траекторию?

Эта система предназначена для быстрого грубого расчета положения 2-х тел со взаимным притяжением.

Но чтобы рассчитать положение 3-х тел, понадобится в единицу времени, кадр за кадром, каждое тело притянуть к каждому телу.

Для 2-х тел надо 2 раза рассчитать притяжение, для 3-х тел — 6 раз, для 4-х – 12 раз.
В единицу времени надо совершить (N-1) * N притяжений, где N – количество тел в системе.

А у нас пространство может искажаться, при том что мы не учитываем гравитационные приливы, солнечный ветер, форму астероидов, светимость и прочее. Если бы в нашей системе было всего 10 000 объектов, надо было бы сделать за кадр 99 990 000 вычислений – и это при условии, что у нас будет ньютоновское пространство!

Причем чем меньше единица времени, тем точнее результат. Для 1 000 000 «мертвых» объектов нужно сделать 1 000 000 000 000 операций за кадр.

Стоит учитывать, что вы вряд ли догадаетесь как распараллелить данные вычисления – нужно их производить последовательно, с использованием результатов предыдущих вычислений!

Я считаю, что дешевле навесить датчики и броню на корабли во избежание попадания. Как утверждает автор, все это ради защиты кораблей от мусора, который вы вряд ли встретите.

Но Око Саурона есть, и оно работает: несколько спутников крутятся вокруг солнца и прожигают каждый сантиметр солнечной системы, вычисляя невероятно мощными мозгами каждое движение винтика.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Зачем программисту стажировка на кухне — разговор с «Додо пиццей» про гембу, .NET и открытость

Бизнес компании оплетен сетью технологичных сервисов, о своей истории они написали книгу, стек технологий и архитектура системы расписаны прямо на сайте, в паре кликов от главной страницы. Про «Додо пиццу» уже известно много. Даже самые неприятные факапы они спокойно и ...

[Перевод] Профилирование кода с LLVM

Проклятие недетерминизма Моя первая попытка написать проход LLVM — люблю эти сегфолты Под словом «детерминированный» я подразумеваю, что один и тот же код будет выполняться за одно и то же количество единиц времени. Недавно я столкнулся с интересной задачей — ...