Телескопы покупают здесь


A A A A Автор Тема: Проекция неба  (Прочитано 1528 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AcruxАвтор темы

  • ****
  • Сообщений: 357
  • Благодарностей: 39
  • Eppur si Muove!
    • DeepSkyHosting: AlexanderKrutov
    • Сообщения от Acrux
    • Astrarium — бесплатный open-source планетарий для Windows
Проекция неба
« : 22 Апр 2008 [15:10:56] »
Всем привет!..

Столкнулся с такой проблемой - построение проекции небесной полусферы на плоскости. Задача, скорее всего, больше картографическая, но надеюсь на то, что на форуме найдутся и картографы :)
Задача такая: имеются высоты (h) и азимуты (a) небесных тел для видимого в данный момент полушария. Нужно перейти к координатам на плоскости (x, y), т.е. необходимо отобразить все это в виде круга, изображающего проекцию полушария. Окружность - горизонт. В общем, хотелось бы получить картинку как в StarCalc'е.

Первое, что приходит на ум - это воспользоваться известной формулой:

x = r * (h / 90) * Cos(a);
y = r * (h / 90) * Sin(a);


здесь r - это константа - радиус того круга, который хотим нарисовать.

На первый взгляд все отлично - картинка нарисовалась, все красиво. Но есть одно но:
картинка получается с искажениями. Например, окружность Лунного диска получается эллипсом, хотя нужен круг. Линии координат, построенные по такой формуле, пересекаются не под прямым углом. Заметьте, в StarCalc'e этого нет - Луна круглая и углы между кругами прямых восхождений и склонений прямые. Ясное дело, проблема в формуле проекции. Проекция должна быть конформной, т.е. сохраняющей углы, как я понимаю. Так вот вопрос - какую формулу для проекции нужно использовать, чтобы углы не искажались?

Заранее спасибо за помощь!
Astrarium — бесплатный open-source планетарий для Windows

SW SkyMax 127, SW BKP1145, Svbony SV48, Nikon Aculon A211 7x35
SW AZ5 HD, SW AZ-GTi
Svbony SV105, SV305

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 546
  • Благодарностей: 69
  • Александр Лапшин
    • Сообщения от Sleepwalker
Re: Проекция неба
« Ответ #1 : 22 Апр 2008 [15:27:19] »
Но одни искажения заменятся другими - в XY расстояния между уровнями высоты будут расти ближе к горизонту.

double cose = cos(el);
double sine = sin(el);
double cosf = cos(az);
double sinf = sin(az);

double k = r/(sine+1);
x = k*cose*cosf;
y = k*cose*sinf;

Оффлайн AcruxАвтор темы

  • ****
  • Сообщений: 357
  • Благодарностей: 39
  • Eppur si Muove!
    • DeepSkyHosting: AlexanderKrutov
    • Сообщения от Acrux
    • Astrarium — бесплатный open-source планетарий для Windows
Re: Проекция неба
« Ответ #2 : 22 Апр 2008 [15:31:14] »
Спасибо, Sleepwalker!
Это то, что нужно! :)
Кстати, только что скачал ваш HeavenSat - отличная работа! Уже заметил, что проекция у вас правильная ;)
Astrarium — бесплатный open-source планетарий для Windows

SW SkyMax 127, SW BKP1145, Svbony SV48, Nikon Aculon A211 7x35
SW AZ5 HD, SW AZ-GTi
Svbony SV105, SV305

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 546
  • Благодарностей: 69
  • Александр Лапшин
    • Сообщения от Sleepwalker
Re: Проекция неба
« Ответ #3 : 22 Апр 2008 [15:34:21] »
Сам пару лет назад столкнулся с такой же проблемой. Я сразу к Завалишину приставать начал :)

Оффлайн AcruxАвтор темы

  • ****
  • Сообщений: 357
  • Благодарностей: 39
  • Eppur si Muove!
    • DeepSkyHosting: AlexanderKrutov
    • Сообщения от Acrux
    • Astrarium — бесплатный open-source планетарий для Windows
Re: Проекция неба
« Ответ #4 : 22 Апр 2008 [15:35:25] »
Ну вот, а мне вы помогли. Преемственность поколений  ;D  ;D  ;D
Astrarium — бесплатный open-source планетарий для Windows

SW SkyMax 127, SW BKP1145, Svbony SV48, Nikon Aculon A211 7x35
SW AZ5 HD, SW AZ-GTi
Svbony SV105, SV305