Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.astronomy.ru/forum/index.php/topic,14705.0.html
Дата изменения: Sun Apr 10 04:30:27 2016
Дата индексирования: Sun Apr 10 04:30:27 2016
Кодировка: Windows-1251

Поисковые слова: annular solar eclipse
как написать планетарий(по какому принципу они сделаны)? помогите - Астрономия и компьютеры

A A A A Автор Тема: как написать планетарий(по какому принципу они сделаны)? помогите  (Прочитано 2165 раз)

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

Pivovar

  • Гость
Подскажите please как написать программу планетарий(по какому принципу они сделаны)? Слышал что в red shift используется стереографическая проекция - но как ее сделать?
Кто занимался этим делом или знает как подскажите пожалуйста.

(писать собираюсь на delphi)

Суворов Владимир

  • Гость
Есть в сети софт под это дело.
Не помню где, но написан на VC++ 6.0
Самое главное исходники выложены.

>>стереографическая проекция - но как ее сделать?
Полнейшая ерунда. Изображение развертывается по принципу глобуса.
Приложнению выделяется динамическая память в виде массива, определенного
в рамках считываемой области. И все. И так каждый раз от шага к шагу.
Не нужно разрабатывать такие проги. Нужно их использовать.

 

Pivovar

  • Гость
А можна по конкретнее?

Оффлайн R.bak

  • *****
  • Сообщений: 1 111
  • Рейтинг: +27/-3
Мне иногда приходят мысли написать ту или иную программу, но потом обстоятельно подумав прихожу к выводу, что таких программ куча и кому нужна моя?
Другое дело, если писать программу которая реально необходима для людей, те где нет конкуренции или достойного решения, то да! Пример: программа Старкалк, напишите к ней плагины которых там не хватает и вам польза(упражнения в программировании) и людям хорошо.
Удачи!

Pivovar

  • Гость
Во первых у меня есть желание ее написать;
Во Вторых если она получится , то  я смогу с ней защититься сразу по двум секциям МАНА (астрономия и информатика);
Не Знаю как у других но мне кажется что свое-родное как то приятнее;
Ну а если я хорошо пойму как это делать и программа хорошо получится то ее смогут пользоваться люди(попоже);


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


              please!

Я уже когда то спрашивал об этом на форуме но ничего конкретного так и не получил, скорее всего кто-то здесь уже делал подобное
« Последнее редактирование: 29.03.2006 [22:19:47] от Pivovar »

Pivovar

  • Гость
Кстати а по какой формуле преобразовать полярные координаты в декартовы?

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 406
  • Рейтинг: +39/-1
    • www.heavensat.ru
Полярные в декартовы ? это для 2Д случая ? ну и вопросы у Вас! :) Если с этим проблема, то что же будет дальше ?  ;)

Если я Ваc правильно понял, то вот решение проблемы ::)

x = r*cos(fi)
y = r*sin(fi)
« Последнее редактирование: 29.03.2006 [22:55:25] от Sleepwalker »

Оффлайн anddor

  • ****
  • Сообщений: 378
  • Рейтинг: +1/-0
  • Per aspera ad astra!
pivovar, вот Вам ссылка на исходники замечательного планетария Cartes du Ciel (тоже на дельфи), может найдете что-нибудь полезное:
http://astrosurf.com/astropc/cartes/sources/
А тут source code новой версии той же программы:
http://www.ap-i.net/skychart/modules.php?op=modload&name=Downloads&file=index&req=viewdownload&cid=10
Вряд ли Вы напишете прогу лучше :), тем более, что эту программу ее автор писал и совершенствовал в течение многих лет (около 10) :)
« Последнее редактирование: 30.03.2006 [20:36:33] от anddor »
Открылась бездна, звезд полна.
Звездам числа нет, бездне - дна...
                                   М.В. Ломоносов

Pivovar

  • Гость
sleepwalker,
А есть формулы для 3д случая?

Оффлайн St@s

  • **
  • Сообщений: 54
  • Рейтинг: +4/-3
В трехмерном пространстве полярных координат нет, есть сферические и цилиндрические.
Если серьезно планируете писать планетарий, возьмите какой-нибудь учебник по аналитической геометрии. Иначе никак.
SkyWatcher DOB 8"

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 406
  • Рейтинг: +39/-1
    • www.heavensat.ru
Вот как делал я...

Сначала путем легких астрономических расчетов  ;D получаем угол возвышения el и азимут az звезды

Дальше эти углы переводим в трехмерные декартовые XYZ

примерно вот так...

   X = R*cos(el)*cos(az);         
   Y = R*cos(el)*sin(az);
   Z = R*sin(el);

Дальше XYZ проецируем на плоскость, что бы на экране нарисовать, вот... тут синусов будет больше...

void BCT(double X, double Y, double Z, double fi,double psi, double T,
       double& x, double& y, double& z)
{
   double a11,a12,a13,a21,a22,a23,a31,a32,a33;
   
   double cosfi = cos(fi);
   double sinfi = sin(fi);
   double cospsi= cos(psi);
   double sinpsi= sin(psi);
   double cosT  = cos(T);
   double sinT  = sin(T);
   
   a11 = cosfi*cospsi;
   a21 = -sinfi*cosT + cosfi*sinpsi*sinT;
   a31 = sinfi*sinT + cosfi*sinpsi*cosT;

   a12 = sinfi*cospsi;
   a22 = cosfi*cosT + sinfi*sinpsi*sinT;
   a32 =-cosfi*sinT + sinfi*sinpsi*cosT;

   a13 =-sinpsi;
   a23 = cospsi*sinT;
   a33 = cospsi*cosT;
   
   x = a11*X+a12*Z+a13*Y;
   y = a21*X+a22*Z+a23*Y;
   z = a31*X+a32*Z+a33*Y;
}

На выходе y и z можно выводить на канву

Pivovar

  • Гость

Pivovar

  • Гость

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 406
  • Рейтинг: +39/-1
    • www.heavensat.ru
Это углы поворота 3Д системы координат

Pivovar

  • Гость
А это как в Redshift'e будет?

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 406
  • Рейтинг: +39/-1
    • www.heavensat.ru
Честно говоря, не знаю, наверно всетаки не так, поскольку перспективы тут не будет, но похожего эффекта добится можно

Pivovar

  • Гость
а углы в радианах или градусах

Оффлайн Sleepwalker

  • *****
  • Сообщений: 2 406
  • Рейтинг: +39/-1
    • www.heavensat.ru