Список форумов Astroworld.ru Astroworld.ru
Астрологический форум с бонусной программой
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Swiss Ephemeris

 
Начать новую тему   Ответить на тему    Список форумов Astroworld.ru -> Двойной щелчок по другим программам
Предыдущая тема :: Следующая тема  
Автор Сообщение
Astrolog
Представитель Astroworld.ru


Зарегистрирован: 02.08.2006
Сообщения: 1771

63.42 AW

СообщениеДобавлено: Сб Мар 05, 2011 13:57    Заголовок сообщения: Swiss Ephemeris Ответить с цитатой

Работаю с этим решением. Знаю, что работаю не только я. А поэтому создаю тему, в которой буду писать о своих наработках, а также для того, чтобы делиться опытом с другими разработчиками, использующими этот модуль в своей работе.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Astrolog
Представитель Astroworld.ru


Зарегистрирован: 02.08.2006
Сообщения: 1771

63.42 AW

СообщениеДобавлено: Сб Мар 05, 2011 14:17    Заголовок сообщения: Восход Солнца Ответить с цитатой

Вот практически сейчас искал, как с помощью Swiss Ephemeris рассчитать восход Солнца.
Функция из документации.
Код:
int32 swe_rise_trans(
double tjd_ut,      /* search after this time (UT) */
int32 ipl,           /* planet number, if planet or moon */
char *starname,      /* star name, if star */
int32 epheflag,      /* ephemeris flag */
int32 rsmi,          /* integer specifying that rise, set, orone of the two meridian transits is
               wanted. see definition below */
double *geopos,      /* array of three doubles containing
               * geograph. long., lat., height of observer */
double atpress,      /* atmospheric pressure in mbar/hPa */
double attemp,     /* atmospheric temperature in deg. C */
double *tret,          /* return address (double) for rise time etc. */
char *serr);       /* return address for error message */

tjd_ut находим из стандартной функции:
tjd_ut = swe_julday(), куда подставляем необходимые параметры (число, месяц, год).
следующий параметр - номер планеты. Нам нужно Солнце, это 0. Для Луны будет единица.
Далее идет переменная, обозначающее имя звезды. Это нужно для расчета звезд. Оставляем пустым, либо подставляем переменную (которую потом можно использовать, если надо считать восход звезды)
int32 epheflag - подставляем iflag (переменная описывается в самой стандартной программе-примере)
rsmi - ставим 0, так как нам нужен восход. Функция, к слову, позволяет считать не только восход.
geopos - тут я сделал так:
Код:
geopos(0) = lon
geopos(1) = lat
geopos(2) = 0

соотвтственно подставляется широта, долгота, и, видимо, высота.
Вызов самой функции с координатами у меня выглядит так (на VB):
Код:
retval = swe_rise_trans(tjd_ut, 0, starname$, iflag, 0, geopos(0), 100, 0, tret1, serr$)

идем дальше, вводим давление (честно говоря не совсем понял в каких именно единицах нужно вводить), и температуру воздуха (в градусах Цельсия).
Задаем переменную tret1 типа double, в которой и будет нужное нам время и переменную, в которую будут писаться ошибки (строковой тип).
Эта функция возвращает юлианскую дату восхода.
Перевести время назад в Григорианский календарь можно следующей функцией:
Код:
swe_revjul(tret1, SE_GREG_CAL, god1, mes1, day1, hour1)

god1 и т.п. это как раз значения в привычном календаре. Час возвращается в долях, а поэтому переводить дальше в минуты и секунды стоит самостоятельно.

P.S. Пока изучал тему восхода узнал много нового для себя, оказывается это зависит от различных факторов. Поэтому погрешность в таких вычислениях всегда есть, она может составлять плюс/минут несколько минут.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Astroworld.ru -> Двойной щелчок по другим программам Часовой пояс: GMT + 4
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB