azilber: (Default)
Anastas Zilber ([personal profile] azilber) wrote2005-04-20 11:18 am

Математика

Если я с известной угловой скоростью двигаюсь вокруг Земли по круговой орбите известного наклонения, можно ли, зная координаты проекции моего текущего положения на земную поверхность, вычислить координаты проекции точки, в которой я окажусь через известное время?

Мне удалось это посчитать, привязавшись к нулевой точке и задав в ней начало декартовой системы координат (ну, или что-то вроде этого), но решение моё мне не нравится. Оно лишено элегантности, и к тому же приходится хранить для программы два лишних параметра (два - потому что вращение Земли тоже хочется учесть).

Это я, сидя без работы, поставил Линукс и решил поизучать Perl, а в качестве объекта приложения сил выбрал вот эту замечательную штуку.

Математики, ау!

[identity profile] talifa-kumi.livejournal.com 2005-04-20 10:38 am (UTC)(link)
Стивен Хоукинг в своей Brief History of Time пишет, что невозможно с точностью предсказать положение тела в будущий момент времени, потому что для этого надо точно определить его настоящее положение, что, в соответствии с uncertainty principle of Max Planck невозможно.

[identity profile] a-zilber.livejournal.com 2005-04-20 11:09 am (UTC)(link)
Мммм... да, наверное, Вы правы. Но мне для этой задачи нужна не реальная Вселенная, а простейшие модельные условия, в которых я точно знаю, что нахожусь в данный момент времени под, скажем, тридцатым градусом северной широты и пятьдесят пятым градусом восточной долготы, и наклонение моей орбиты - семьдесят градусов. Мне хочется просто картинку нарисовать. Собственно, я её уже и нарисовал, но мой метод расчёта кажется мне очень громоздким.

[identity profile] -dp-.livejournal.com 2005-04-20 12:40 pm (UTC)(link)
По-иоему, тебе надо просто нарисовать синусоиду на плоской развертке Земли. Как на экране в ЦУПе :)

[identity profile] a-zilber.livejournal.com 2005-04-20 01:02 pm (UTC)(link)
Ну да, именно её. Беда в том, что она, кажется, не синусоида, хотя и прикидывается ею. Но если даже она окажется синусоидой, то мне же надо знать, в какой проекции нарисована эта карта на экране в ЦУПе и как её координаты пересчитывать обратно в сферические. Ужас, в общем.

Потом, решить-то я решил, но решение довольно громоздкое. Жажду элегантности. :)

[identity profile] -dp-.livejournal.com 2005-04-20 01:26 pm (UTC)(link)
Ее - развертки - координаты как бы и есть сферические: абсцисса - долгота (азимутальный угол), ордината - широта (полярный угол). А траектория должна быть синусоидой в предположении сферической Земли и постоянных скоростей вращения (обеих).

Тогда, если твоя угловая скорость v, а угол наклона траектории к экватору α, то смещение по долготе будет просто
Δφ = Δt × (v × cosα + vt)
(t - время, vt - угловая скорость вращения Земли).
Ну а по широте, соответственно, Δθ = Δφ × tgα

Что-то уж больно просто :)

[identity profile] a-zilber.livejournal.com 2005-04-20 01:54 pm (UTC)(link)
Wow! И всё?!

Огромное тебе спасибо. Сравню со своим методом и расскажу, что получилось.

(Чёрт, а я там такого нагромоздил в программе, теперь надо всё менять... :)

Ещё раз спасибо!

[identity profile] ka-da-vr.livejournal.com 2005-04-20 02:28 pm (UTC)(link)
Дык, оно и должно быть просто, как всё гениальное;-) В принципе, какая разница, поступательное в декартовых или вращательное в полярных (в данном случае, сферических)? Но мне понравился ход вашей мысли.

[identity profile] a-zilber.livejournal.com 2005-04-20 03:32 pm (UTC)(link)
Дима, я наскоро вбил это в Excel, и что-то у меня не выходит. У тебя долгота равномерно возрастает (что, по-видимому, верно), но вместе с нею так же равномерно возрастает и широта. А этого быть не может - модуль широты никогда не превышает угла наклонения орбиты, а скорость её изменения вблизи максимальных значений становится много меньше скорости изменения долготы, в пределе - ноль. У тебя же они всегда пропорциональны друг другу с коэффициентом tgα.

Или я где-то чего-то не понимаю?

[identity profile] -dp-.livejournal.com 2005-04-20 03:44 pm (UTC)(link)
Да нет, это я проврался. Бум думать.

[identity profile] prosyankin.livejournal.com 2005-04-20 03:23 pm (UTC)(link)
Из серии "Продолжите логический ряд" - север, юг, запад, восток... :)

[identity profile] http://users.livejournal.com/_margo/ 2005-04-20 06:52 pm (UTC)(link)
Ты без работы? Ой . :(

[identity profile] a-zilber.livejournal.com 2005-04-20 07:48 pm (UTC)(link)
Да, есть такое дело, что ой, то ой. В известном смысле я, конечно, работаю, потому что поиски работы это полная занятость, на всю неделю с утра до вечера. Только, к сожалению, без зарплаты. :)

[identity profile] http://users.livejournal.com/_margo/ 2005-04-21 05:47 pm (UTC)(link)
Пусть оно поскорей рассосется!

[identity profile] a-zilber.livejournal.com 2005-04-21 05:58 pm (UTC)(link)
Спасибо.

[identity profile] latakot.livejournal.com 2005-04-24 09:21 am (UTC)(link)
Задачка в принципе простая (пару раз преобразовать системы координат), но результаты несколько громоздкие.

Пусть w - угловая скорость спутника,
W - угловая скорость Земли,
q - широта,
j - долгота,
a - наклонение орбиты спутника.

Решение имеет вид
q = arcsin(sin(w t + y ) sina )
j = arctg(tg(w t + y ) cosa ) - W t + F
где константы F , y определяются из начальных условий. Например, если при t = 0 были координаты j 0, q 0, то
y = arcsin(sinq 0 / sina )
F = j 0 - tgy cosa

...Тут при переносе из Word-а греческие буквы заменились на латинские, не очень подходящие, но разобраться можно.
И еще: поскольку значения функции arctgx заключены между –90° и 90° , а долгота изменяется в пределах от –180° до 180° , то в программе нужно вовремя к долготе добавлять или вычитать 180° . Разберетесь?

[identity profile] a-zilber.livejournal.com 2005-04-26 08:52 am (UTC)(link)
Большое спасибо, Латакот!

Разобрался, и всё получается. Это очень похоже на моё собственное решение, разве что моё не так стройно. Например, вращение Земли у меня вычитается как-то намного более неуклюже, чем у Вас.

Но мне не дают покоя F и y, определяемые из начальных условий. Неужели и в ЦУПе, расчитывая орбиты "Союзов", всё время плясали от Байконура? F и y и есть те два лишних, на мой взгляд, параметра, которые мне приходится протаскивать в программе. Неужели нельзя определить положение через время дельта-t, просто отталкиваясь от текущих координат, скорости и наклонения? Ведь через каждую точку можно провести только одну плоскость, пересекающую шар в центре под определённым уголом к экватору?

[identity profile] latakot.livejournal.com 2005-04-26 12:38 pm (UTC)(link)
Так ведь, дорогой Zilber, именно так оно и есть!
Здесь ведь задаются именно текущие координаты j0, q0 и вычисляются координаты j, q через промежуток времени t! А величины y и F ведь не надо задавать дополнительно, это просто промежуточные величины, вычисляемые через текущие координаты; без y и F вполне можно бы обойтись, подставив их в первые два уравнения, но тогда все выглядело бы более громоздко.
Начальный момент t=0 - это вовсе не момент запуска, а исходная точка отсчета, т.е., по-Вашему, текущий момент времени. А t, отсчитываемое от него, это Ваше дельта-t.

[identity profile] a-zilber.livejournal.com 2005-04-26 02:41 pm (UTC)(link)
Тьфу ты, чёрт. Какой же я болван. Ведь действительно.

Теперь только надо понять, что делать, если угол под тангенсом окажется равен ровно 90° или -90°. Надеюсь, что справлюсь.

Ещё раз большущее спасибо.

[identity profile] latakot.livejournal.com 2005-04-26 03:14 pm (UTC)(link)
Тогда нужно соответствующий arctg заменить на 90 или -90 градусов.

[identity profile] a-zilber.livejournal.com 2005-04-26 09:40 pm (UTC)(link)
Господи, как теперь всё кажется просто.

Сел рисовать алгоритм. Спасибо!