Pull to refresh

Об полетах на околоземной орбите у себя дома перед монитором и как я это делал

Иногда я вижу сны в которых летаю. И после прочтения топика О космической Доброте мне захотелось полетать на яву хоть и виртуально но с настоящими снимками со спутника ЭлектроЛ. Эта публикация о том как я это делал.
Я написал программку которая берет за основу снимки с космоса и отображает их на шар.
Готового алгоритма преобразования изображения со спутника на землю не смог найти, хотя долго искал, поэтому сделал свой.

Наша моделька:
image
Точка 1 — Спутник с координатами x1,y1,z1
Коричневая плоскость — снимок. Точки снимка имеют координаты x2,y2,z2
Голубой Шар — земля… Снимок на него проецируется по координатам x,y,z. (без индексов)
Зеленая линия — квант луча долетевший до спутника.
То есть нам нужно найти функцию проецирования точек снимка на шар: X(x2,y2), Y(x2,y2), Z(x2,y2)

Шар задается уравнением
x^2+y^2+z^2=1; где за 1 принимаем радиус земли чтобы упростить расчеты уже на этом этапе.
Уравнения линии:
(z-z1)/(1-z1)=t
y/y2=t
x/x2=t

Отсюда
z=z1 + t — t*z1
y=y2*t
x=x2*t
Осталось подставить в формулу шара:
x2^2*t^2+y2^2*t^2+(z1+t-t*z1)^2 = 1
и найти t:
t1 = (-z1+z1^2+sqrt(z1^2+x2^2-x2^2*z1^2+y2^2-y2^2*z1^2+1-2*z1))/(x2^2+y2^2+1-2*z1+z1^2)
t2= -(z1-z1^2+sqrt(z1^2+x2^2-x2^2*z1^2+y2^2-y2^2*z1^2+1-2*z1))/(x2^2+y2^2+1-2*z1+z1^2)
t1 отвечает точкам с обратной стороны земли и он нам не нужен.
Теперь можно подставить t и найти координаты проецируемой точки.
Осталось поставить координаты спутника:
Расстояние от земли до спутника на орбитальной орбите 35786 км
Радиус земли 6378.1км
z1=35786/6378.1+1

Моделирование дает вот такую проекцию:
image

Далее я сделал программу просмотра таких снимков.
Здесь вы можете посмотреть как это работает:


О самих снимках: RGB изображения доступны в качестве 120MPix. Rрасный канал захватывает и инфракрасную область, от этого снимки выглядят неестественно… Очень хотелось бы увидеть спектральные чувствительности используемых фильтров. Я мог бы чтобы попробовать свести изображения в естественных цветах.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.