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


A A A A Автор Тема: Астрономия на персональном компьютере. Исходники.  (Прочитано 19703 раз)

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

Оффлайн xd

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Настройки по умолчанию для ostream.
http://codepad.org/nEjOwYjy
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

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

  • ****
  • Сообщений: 350
  • Благодарностей: 17
  • 61:45:28,6 N 34:21:39.5 E (134 + 15 этаж) м
    • Сообщения от gasha
    • Siä Karjalassa
Deimos, огромное спасибо.

...
    //Устанавливаем точность вычислений
    std::cout.precision(10);
...

И всё ОК))

P.S. Я так полагаю, что это требуется только для вывода. А сами расчёты идут без ограничения по точности? Ещё раз спасибо))

Программка выдала:

2456397.5

   R.A.    Dec      R
 23.34173211 9.745586586 1.003255906

Сверяемся (ссылка на онлайн генератор Швейцарских эфемерид)

Полное совпадение
« Последнее редактирование: 15 Апр 2013 [18:13:04] от gasha »
БПЦ 15х50, Nikon Aculon 7x50, Celestron Advanced VX 8" N, Sky-Watcher BK 909AZ3, ТАЛ-65, Таир-3ФС, Canon EOS 60D, Sony Alpha NEX-3.

Оффлайн Михаил ФМ

  • **
  • Сообщений: 82
  • Благодарностей: 8
    • Сообщения от Михаил ФМ
Я так полагаю, что это требуется только для вывода. А сами расчёты идут без ограничения по точности?

Да. Манипулятор cout.precision() устанавливает количество знаков при выводе вещественных чисел. Точность вычислений определяется типом данных (float < double < long double).

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

  • ****
  • Сообщений: 350
  • Благодарностей: 17
  • 61:45:28,6 N 34:21:39.5 E (134 + 15 этаж) м
    • Сообщения от gasha
    • Siä Karjalassa
Снова я))

Какие-то непонятки при использовании Швейцарских эфемерид:

Вот код маленькой тестовой программки по расчёту координат Солнца.

#include <iostream>

using namespace std;

#include "swedll.h"
#include "sweodef.h"
#include "swephexp.h"

int main (){
 
  //Тут мы указали программе, что файлы с эфемеридами надо искать в той же директории, где и сама программа
  swe_set_ephe_path("./");
  swe_set_jpl_file("unxp1800.406");
 
  char *sp, sdate[AS_MAXCH], snam[40], serr[AS_MAXCH];
  int jday = 21, jmon = 5, jyear = 2013;
  double jut = 0.0;
  double tjd_ut, te, x2[6];
  long iflag, iflgret;
  //Просим сделать расчёт для Солнца
  int p=SE_SUN;
  //Говорим, что надо использовать именно JPL, а также расчитать и компоненты скорости. И пусть всё будет в экваториальных координатах.
  iflag = SEFLG_JPLEPH|SEFLG_SPEED|SEFLG_EQUATORIAL;
  //Вычисляем юлианскую дату
  tjd_ut = swe_julday(jyear,jmon,jday,jut,SE_GREG_CAL);
  //Собственно расчёт
  iflgret = swe_calc_ut(tjd_ut, p, iflag, x2, serr);
 
  /*
  На выходе получаем:
  x2[0] - Прямое восхождение
  x2[1] - Склонение
  x2[2] - Расстояние от Земли до объекта
  x2[3] - Изменение прямого восхождения, гралусы/сутки
  x2[4] - Изменение склонения, градусы/сутки
  x2[5] - Изменение радиуса-вектора, астрономических единиц/сутки
  */
 
  cout << x2[0] << " / " << x2[1] << " / " << x2[2] << " / " << x2[3] << " / " << x2[4] << " / " << x2[5] << endl;

  return 0;
}

Компиляция: g++ test.cpp libswe.a

То есть подключается библиотека libswe.a, а также в исходних внесены соответствующие заголовочные файлы.

Выхлоп консоли:

:~/Portable/test> g++ test.cpp libswe.a
In file included from test.cpp:5:0:
swedll.h:84:1: error: expected constructor, destructor, or type conversion before ‘(’ token
In file included from test.cpp:5:0:
swedll.h:85:1: error: expected constructor, destructor, or type conversion before ‘(’ token
swedll.h:86:1: error: expected constructor, destructor, or type conversion before ‘(’ token
swedll.h:88:1: error: expected constructor, destructor, or type conversion before ‘(’ token

...

swedll.h:495:1: error: expected constructor, destructor, or type conversion before ‘(’ token
swedll.h:502:1: error: expected constructor, destructor, or type conversion before ‘(’ token
swedll.h:510:1: error: expected constructor, destructor, or type conversion before ‘(’ token
swedll.h:516:1: error: expected constructor, destructor, or type conversion before ‘(’ token
test.cpp: In function ‘int main()’:
test.cpp:12:25: error: ‘swe_set_ephe_path’ was not declared in this scope
test.cpp:13:34: error: ‘swe_set_jpl_file’ was not declared in this scope
test.cpp:25:54: error: ‘swe_julday’ was not declared in this scope
test.cpp:27:51: error: ‘swe_calc_ut’ was not declared in this scope

Вот ссылка на swedll.h Хотя она для версии 1.75.00

А так все эксперименты проходили с версией 1.79.00

Спасибо.

P.S. Ошибка была элементарной: надо подключать только #include "swephexp.h"
« Последнее редактирование: 21 Мая 2013 [10:17:18] от gasha »
БПЦ 15х50, Nikon Aculon 7x50, Celestron Advanced VX 8" N, Sky-Watcher BK 909AZ3, ТАЛ-65, Таир-3ФС, Canon EOS 60D, Sony Alpha NEX-3.

Оффлайн Михаил ФМ

  • **
  • Сообщений: 82
  • Благодарностей: 8
    • Сообщения от Михаил ФМ
Подскажите, а Швейцарские эфемериды, они что, под астрологию заточены, или не только? Есть от них какой-то толк в астрономических расчётах?

Оффлайн xd

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Эмм...  А в каком месте они вообще были под астрологию заточены?
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Михаил ФМ

  • **
  • Сообщений: 82
  • Благодарностей: 8
    • Сообщения от Михаил ФМ
Возможно я ошибаюсь, но у них изначально астрологическое происхождение. Это файлы астрономических эфемерид NASA, сжатые астрологами раз в десять, чтобы уменьшить объём. Да и поиск ведёт на астрологические сайты.

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

  • ****
  • Сообщений: 350
  • Благодарностей: 17
  • 61:45:28,6 N 34:21:39.5 E (134 + 15 этаж) м
    • Сообщения от gasha
    • Siä Karjalassa
Возможно я ошибаюсь, но у них изначально астрологическое происхождение.

Вроде так и есть, ну и пусть. Хоть какая-та польза от них))) Зато сотворили стоящую вещь.
БПЦ 15х50, Nikon Aculon 7x50, Celestron Advanced VX 8" N, Sky-Watcher BK 909AZ3, ТАЛ-65, Таир-3ФС, Canon EOS 60D, Sony Alpha NEX-3.

Оффлайн Михаил ФМ

  • **
  • Сообщений: 82
  • Благодарностей: 8
    • Сообщения от Михаил ФМ
Хоть какая-та польза от них))) Зато сотворили стоящую вещь.

Тот случай, когда "дурная дочка астрономии" ((с)Кеплер) приносит пользу своей матери?:).
Вот данные по точности Швейцарских эфемерид с сайта разработчика
- точность сжатых эфемерид НАСА DE406: 1м для Луны, 25м для других планет;
- точность сжатия эфемерид DE405/DE406: 0,001";
- точность моделирования эфемерид "методом Мошера" (какой-то астролог ихний): 0,1" для планет и 3" для Луны.
Оказывается у них весьма важно очень точно знать, типа когда Сатурн вступит в дом Луны, что-ли, или дом Овена в дом Рака там :-X

Оффлайн xd

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Оказывается у них весьма важно очень точно знать, типа когда Сатурн вступит в дом Луны, что-ли, или дом Овена в дом Рака там :-X
... и потом тыкать пальцем в небо, делая какие-то малоадекватные общие прогнозы ни о чём? ;D
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Freddykrug

  • *****
  • Сообщений: 15 566
  • Благодарностей: 403
  • Мечта: остров посреди океана, 300 ночей, > 500 мм.
    • Сообщения от Freddykrug
Вы правы. В 90-х годах была даже выпущен альманах с этими "Швейцарскими эфемеридами". Хорошо, что почитал сначала предисловие  :D
Sky-Watcher Dob 8", Celestron Omni XLT 120, БЦП 20х60,  forum.boinc.ru

Оффлайн Kirill Grishin

  • *****
  • Сообщений: 2 665
  • Благодарностей: 63
  • Астрокот.ру: astrokot.ru
    • Сообщения от Kirill Grishin
    • АСТРОКОТ
Зачем нужны какие-то швецарско-насовские эфемериды?
Ради интереса искал как-то - ничего путного не нашёл.
И всем, кто впервые  имеет дело с эфемеридами,  крайне настоятельно отговариваю от поиска и использовании этих самых швейцарских эфемерид, и советую использовать VSOP 87,потому что их очень легко получить на различных языках и их работа может быть понятна даже новичку....

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

  • ****
  • Сообщений: 350
  • Благодарностей: 17
  • 61:45:28,6 N 34:21:39.5 E (134 + 15 этаж) м
    • Сообщения от gasha
    • Siä Karjalassa
VSOP87 устаревшая численно-аналитическая модель, хоть и имеет большие временные рамки. Делалась с оглядкой на JPL DE200. Правда не для всех планет. Плюс VSOP87 нужно приводить к современным условиям. В Швейцарских эфемеридах уже заложена современная прецессионно-нутационная модель (IAU2006). Плюс алгоритмы по затмениям, покрытиям. Я не имею ничего против VSOP87). JPL имеет временные рамки +- 3000 лет, швейцарские эфемериды +-5400, а VSOP от 2000 до 5000 лет (есть всё в ридми к ним).
БПЦ 15х50, Nikon Aculon 7x50, Celestron Advanced VX 8" N, Sky-Watcher BK 909AZ3, ТАЛ-65, Таир-3ФС, Canon EOS 60D, Sony Alpha NEX-3.

Оффлайн Проходящий Кот

  • *****
  • Сообщений: 19 443
  • Благодарностей: 426
    • Сообщения от Проходящий Кот
У есть есть вся книга на турбопаскале. набрал и пользовался в эпоху информационного вакуума. Откомпилировано. исправлены некоторые ошибки в исходниках.
В Дельфи оно работает в консольном виде. Перевод на экран требует времени.

Оффлайн Михаил ФМ

  • **
  • Сообщений: 82
  • Благодарностей: 8
    • Сообщения от Михаил ФМ
Здесь дело вот в чём. Делается попытка придать наукообразие астрологическим прогнозам. Не сомневаюсь, этот самый Мохер, или как там его, знает, что-такое, к примеру, интерполяция. Однако, его т.н. "семианалитический метод" (ну надо же какое название!) не опубликован нигде ни в одном научном журнале, нигде не звучал на научных конференциях, и лишь туманно упоминается как высокомудрённая основа Швейцарских эфемерид. Нет ни малейших оснований доверять результатам этих расчётов, даже если они кажутся точными.
Кстати, наконец вспомнил. Лет 5-7-10(?) назад в одном из блогов некий человек писал об ошибках в этих эфемеридах и как он их исправлял. Я страниц 5 прочитал внимательно, всё более удивляясь своей бестолковости,  тут началось что-то типа про "Дома Скорпиона" и всё стало ясно... (Чур! Почудился Козерог на рогах, нетерпеливо поглядывающий на высокоточные швейцарские эфеме часы, чтобы вовремя вступить в Дом Девы...) :)
РС. VSOP87 - отличная вещь!

Оффлайн Александр Вольф

  • *****
  • Сообщений: 3 319
  • Благодарностей: 103
  • Stellarium Developer
    • Skype - alex.v.wolf
    • Jabber - alex.wolf@jabber.ru
    • DeepSkyHosting: alexwolf
    • Сообщения от Александр Вольф
    • 47 Tucanae
Однако, его т.н. "семианалитический метод" (ну надо же какое название!) не опубликован нигде ни в одном научном журнале, нигде не звучал на научных конференциях, и лишь туманно упоминается как высокомудрённая основа Швейцарских эфемерид.
По-русски это называется полу-аналитический метод. К примеру, VSOP87 также получен полу-аналитическим способом.

РС. VSOP87 - отличная вещь!
Есть и более поздние VSOP'ы - VSOP2000; VSOP2002; VSOP2002b, 2004. Есть и более поздние версии, но они пока еще не опубликованны для широкой общественности (информация, собственно, из IMCCE). VSOP87 - довольно простая штука при достаточной точности, потому он так широко известен.
С уважением, Александр
Астротоп | Stellarium: donate | KStars
SW ED80/SW AllView GOTO | Celestron 15x70 | Celestron 25-125x80 | Veber 25x100

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

  • ****
  • Сообщений: 350
  • Благодарностей: 17
  • 61:45:28,6 N 34:21:39.5 E (134 + 15 этаж) м
    • Сообщения от gasha
    • Siä Karjalassa
Доброго времени суток, ясного неба)

Штудирую библиотеку IAU Sofa (выше была о ней речь)

Пытаюсь вычислить звёздную абберацию (вот ссылка на исходник):

void iauAb(double pnat[3], double v[3], double s, double bm1,double ppr[3])

Given:
pnat    double[3]   natural direction to the source (unit vector)
v       double[3]   observer barycentric velocity in units of c
s       double      distance between the Sun and the observer (au)
bm1     double      sqrt(1-|v|^2): reciprocal of Lorenz factor

Returned:
ppr     double[3]   proper direction to source (unit vector)

Хотя бы в двух словах о том, чтоже это за Лоренц фактор (Lorenz factor)

Википедия даёт формулу:
Какую скорость брать? Скорость движения Земли по своей орбите?
Спасибо)

P.S. Сейчас меня интересует именно решение из IAU Sofa.
БПЦ 15х50, Nikon Aculon 7x50, Celestron Advanced VX 8" N, Sky-Watcher BK 909AZ3, ТАЛ-65, Таир-3ФС, Canon EOS 60D, Sony Alpha NEX-3.

Оффлайн xd

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Да, в таких случаях берётся орбитальная скорость Земли. Ну или смотря какая задача.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

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

  • ****
  • Сообщений: 350
  • Благодарностей: 17
  • 61:45:28,6 N 34:21:39.5 E (134 + 15 этаж) м
    • Сообщения от gasha
    • Siä Karjalassa
#include <iostream>
#include <iomanip>
#include <cmath>

#include "sofa.h"

using namespace std;

// Некоторые константы
double c = 299792458;
double ae = 149597870691;
double aec = ae / c;


int main ()
{
  // natural direction to the source (unit vector)
  // То есть просто прямоугольные координаты? Допустим, у нас будет Марс.
  // Здесь геоцентрические координаты с учётом световой задежки
  // Все расчёты на 1 января 2000 года TT
  double mars[3] = { 1.5588776738895, -0.894496012928111, -0.425542015049319 };
  double mars_aber[3];
  // Барицентрические координаты Земли
  double earth[3] = { -0.175663799206302, 0.886199302780017, 0.384434647535611 };
  // Радиус-вектор
  double earth_r = sqrt ( earth[0]*earth[0] + earth[1]*earth[1] + earth[2]*earth[2] );
  // Скорость Земли, были АЕ/сут, а стали в скоростях света
  double earth_v[3] = { -0.0172285715628808/86400*aec, -0.00276625052797101/86400*aec, -0.00119938017638016/86400*aec };
  double V = sqrt ( earth_v[0]*earth_v[0] + earth_v[1]*earth_v[1] + earth_v[2]*earth_v[2] );
  // Лоренц-фактор
  // Скорость Земли в скоростях света
  double bm1 = sqrt (1 - V*V);
 
/*  Given:
**    pnat    double[3]   natural direction to the source (unit vector)
**    v       double[3]   observer barycentric velocity in units of c
**    s       double      distance between the Sun and the observer (au)
**    bm1     double      sqrt(1-|v|^2): reciprocal of Lorenz factor
**
**  Returned:
**    ppr     double[3]   proper direction to source (unit vector)
*/

  iauAb ( mars, earth_v, earth_r, bm1, mars_aber );
 
  cout << setprecision(15) << " X= " << mars_aber[0] << " Y= " << mars_aber[1] << " Z= " << mars_aber[2] << endl;
 
  return 0;
}

Получаем: X= 0.843997880951237 Y= -0.484332045372666 Z= -0.230412774765098

И что  сэтим делать?)
« Последнее редактирование: 24 Июн 2015 [12:09:11] от gasha »
БПЦ 15х50, Nikon Aculon 7x50, Celestron Advanced VX 8" N, Sky-Watcher BK 909AZ3, ТАЛ-65, Таир-3ФС, Canon EOS 60D, Sony Alpha NEX-3.

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

  • ****
  • Сообщений: 350
  • Благодарностей: 17
  • 61:45:28,6 N 34:21:39.5 E (134 + 15 этаж) м
    • Сообщения от gasha
    • Siä Karjalassa


Astronomie mit dem Personal Computer, Montenbruck, Pfleger, 2004

Оказывается ещё 12 лет назад вышло новое издание. На сайте издателя нет возможности скачать исходники. Только на Pascal для древнего издания.
В свете нынешнего курса и незнания немецкого языка заказывать книжку за 90 евро как-то накладно)
Не попадались в сети исходники из данного издания книги?
БПЦ 15х50, Nikon Aculon 7x50, Celestron Advanced VX 8" N, Sky-Watcher BK 909AZ3, ТАЛ-65, Таир-3ФС, Canon EOS 60D, Sony Alpha NEX-3.