Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.astronomy.ru/forum/index.php/topic,8725.0.html
Дата изменения: Sun Apr 10 01:48:15 2016
Дата индексирования: Sun Apr 10 01:48:15 2016
Кодировка: Windows-1251
Программа расчета фазы лунны - Астрономия и компьютеры

A A A A Автор Тема: Программа расчета фазы лунны  (Прочитано 5236 раз)

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

ripsys

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

lexluther

  • Гость
Re: Программа расчета фазы лунны
« Ответ #1 : 28.04.2005 [09:13:15] »
Доброго времени Звездочеты.....
вот пишу программу на дельфи для расчета фазы лунны по сегодняшней дате и времени........программа вроде считает, но результат пока выдает не правильный......
Беру системную дату, разбираю ее (парсинг), перевожу в юлианский стиль.....потом вычисляю эклиптические координаты луны и сонца, потом беру отношение их.......
Но где-то зарыт камень......не понимаю где, если нада я выложу исходники.....только помогите........за помощь отблагодорю, выложу программку для раздачи........

Привет, не мог бы ты поделится формулами и принципом вычисления?

Заранее огромное спасибо.

Артем Иванов
www.cubereality.com

Оффлайн Ivan Mhitarov

  • Модератор
  • *****
  • Сообщений: 4 904
  • Рейтинг: +64/-9
  • Наша служба и опасна и трудна...
    • Skype - vanmhit
  • Награды Неоднократный победитель конкурса астрофото
Re: Программа расчета фазы лунны
« Ответ #2 : 28.04.2005 [10:21:35] »
Function GetPhase(Day, Month, Year:Integer):Real;
Var T, S :Extended;
LS,BS,RS :Extended;
L ,B ,R :Extended;
CGam,SGam :Extended;
Begin
T:=(MJD(Day, Month, Year, 0.0)-MJD2000)/36525;
Sun2000(T,LS,BS,RS);
Moon (T,L ,B ,R );
CGam:=Cs(LS-L)*Cs(B);
SGam:=Sqrt(1.0-CGam*CGam);
S:=Atn2(SGam,(0.0025-CGam));
T:=LS-L;
If T < 0 Then
T:=T+360;
If T < 180
Then GetPhase:=-Sqr(Cs(S/2))
Else GetPhase:=Sqr(Cs(S/2));
End;


Procedure DrawMoon(Canv : TCanvas; R : TRect; Phase : Real);
Var W, H : Integer;
Begin
W:=R.Right-R.Left;
H:=R.Bottom-R.Top;
With Canv do
Begin
Brush.Color:=clBlack;
Brush.Style:=bsSolid;
Pen.Color:=clBlack;
Ellipse(R.Left, R.Top, R.Right, R.Bottom);
If Abs(Phase) < 0.01 Then
Exit;
Brush.Color:=clWhite;
If Phase > 0
Then Pie(R.Left, R.Top, R.Right, R.Bottom,
R.Left+ (W div 2), R.Bottom, R.Left+ (W div 2), R.Top)
Else Pie(R.Left, R.Top, R.Right, R.Bottom,
R.Left+ (W div 2), R.Top, R.Left+ (W div 2), R.Bottom);
If (Abs(Phase) >= 0.48) And (Abs(Phase) <= 0.52) Then
Exit;
If Abs(Phase) < 0.5 Then
Brush.Color:=clBlack;
Pen.Color:=Brush.Color;
Ellipse(R.Left+Round(W-W*Abs(Phase)), R.Top, R.Left+Round(W*Abs(Phase)), R.Bottom);
Pen.Color:=clBlack;
Brush.Color:=clWhite;
Brush.Style:=bsClear;
Ellipse(R.Left, R.Top, R.Right, R.Bottom);
End
End;
Вот, писалось еще на Delphi 1 лет 9 назад. Первая функция считает фазу, вторая - рисует Луну в заданной фазе.
В первой функции используются функции из Монтенбрука, но раз у тебя уже есть долготы Солнца и Луны - проблем быть не должно. Если понадобится - функции вышлю приватом.
« Последнее редактирование: 28.04.2005 [10:24:24] от Ivan Mhitarov »
Иван Мхитаров
Кубанский Астрономический Клуб "45".

ripsys

  • Гость
Re: Программа расчета фазы лунны
« Ответ #3 : 28.04.2005 [10:25:05] »
Доброго времени суток.....
Краткое описание ситуации....
Один чел (который силен в астрономии, но не в программировании) попросил меня (увлекаюсь программированием на дельфи, в универе паскаль сначала ведь учили, а потом и дельфи ) написать для него маленькую прогу, которая бы сидела в трее и считала по текущему времени фазу луна. Снабдив при этом меня всеми исходниками которые у него были (из разных книг, старые разработки на фортране и паскале),  вот я и разбираюсь с процедурами которые есть, конечна есть коментарии что на входе и на выходе у процедуры, формул расчета как таковых не снаю, в поисках, вот так вот и разбираюсь: то у людей на астрофоруме спрошу пару вопросов.....
Принцип подсчета таков: по текущей дате вычисляем даты юлианского календаря в формате J2000, использую ее вычисляю геоцентрические эклиптические долготы луны и солнца, а потом отношение этих долгот....может я где-то ошибся.....поправте пожайлуста..

ЗЫ: и не забудьте я новичек в астрономиии..........

ripsys

  • Гость
Re: Программа расчета фазы лунны
« Ответ #4 : 28.04.2005 [10:26:06] »
пока писал поэму ответ написали  8)
спасиба, монтебрук имеется......я даже сразу заметил свою ошибку......еще раз спасиба......

ripsys

  • Гость
Re: Программа расчета фазы лунны
« Ответ #5 : 28.04.2005 [10:48:29] »
2 Ivan Mhitarov
а не мог бы ты выложить процедуру которая выполняет фунцкию расчета и процедуру рисования.....просто свой код переделал выдает тот же результат.....интересно......просто не понимаю......

Оффлайн Ivan Mhitarov

  • Модератор
  • *****
  • Сообщений: 4 904
  • Рейтинг: +64/-9
  • Наша служба и опасна и трудна...
    • Skype - vanmhit
  • Награды Неоднократный победитель конкурса астрофото
Re: Программа расчета фазы лунны
« Ответ #6 : 28.04.2005 [11:54:31] »
Вот картинка и исходник (все во вложениях). Если будут вопросы про треевую иконку - пиши лично, здесь это уже оффтопик.
Delphi 7 без сторонних компонентов и библиотек.
Иван Мхитаров
Кубанский Астрономический Клуб "45".

Оффлайн IgorZ

  • ***
  • Сообщений: 236
  • Рейтинг: +0/-0
Re: Программа расчета фазы лунны
« Ответ #7 : 28.04.2005 [17:46:24] »
Извиняюсь за не совсем уместный здесь вопрос, но может кто-то знает где в инете есть "Астрономия на ПК" Монтенбрука для Паскаля. Для Си эта книга у меня есть, но программирую я на Делфи.

ChesnoCK

  • Гость
Re: Программа расчета фазы лунны
« Ответ #8 : 28.04.2005 [18:38:51] »
А не подскажите, где можно взять скрипт или апплет для показа фаз луны на текущий момент?

ripsys

  • Гость
Re: Программа расчета фазы лунны
« Ответ #9 : 28.04.2005 [19:14:11] »
Натыкался в сети на Ява аплет для расчета фазы луны, поищи яндексом, но говорят что точность у него некакая..........
На счет проги - то все работает, луна рисуется, будем надеятся что правильно, да и немного подправил код, инвертировал цвета, а то видимое  - черное, я сделал как оно и есть - видимое белое, не видимое черное....
Благодарю всех кто принял участие  ;D

Оффлайн Ivan Mhitarov

  • Модератор
  • *****
  • Сообщений: 4 904
  • Рейтинг: +64/-9
  • Наша служба и опасна и трудна...
    • Skype - vanmhit
  • Награды Неоднократный победитель конкурса астрофото
Re: Программа расчета фазы лунны
« Ответ #10 : 02.05.2005 [11:59:07] »
На счет проги - то все работает, луна рисуется, будем надеятся что правильно, да и немного подправил код, инвертировал цвета, а то видимое - черное, я сделал как оно и есть - видимое белое, не видимое черное....
Не понял... Программа дает прямое изображение и видимая часть обозначена белым. Сейчас Луна как раз стареющая и на приведенном выше скриншоте все показано правильно.
Иван Мхитаров
Кубанский Астрономический Клуб "45".

ripsys

  • Гость
Re: Программа расчета фазы лунны
« Ответ #11 : 03.05.2005 [05:52:30] »
да.....это я немного ошибся, просто у меня была проблема с процедурой Cs она в дельфи описанна, а есть еще и твое описание.....еще раз спасиба за ответы.....
Не хотелось бы создавать новую тему.......
Сейчас пишу продолжение к моей програмке....теперь мучаюсь с вычислением времени восхода луны для опредиленного географического места.......как бы застрял на нахождении эклиптического градусав котором находится луна.....может кто-то может что нить подсказать......я в долгу не останусь.......
Заранее спасибо, и извените если мой вопрос у вас просто отнял время........

Оффлайн Ivan Mhitarov

  • Модератор
  • *****
  • Сообщений: 4 904
  • Рейтинг: +64/-9
  • Наша служба и опасна и трудна...
    • Skype - vanmhit
  • Награды Неоднократный победитель конкурса астрофото
Re: Программа расчета фазы лунны
« Ответ #12 : 03.05.2005 [17:20:13] »
Смотри функцию ArcTan2. Выдает угол в нужной четверти.
Иван Мхитаров
Кубанский Астрономический Клуб "45".

ZUDA32.EXE

  • Гость
Re: Программа расчета фазы лунны
« Ответ #13 : 05.05.2005 [16:53:31] »
Может немного не в тему... -
Я знаю, как рассчитать фазу луны в известный день и час.
А вот как решается обратная задача? То есть - определить день и час, когда будет иметь место известная фаза?
Ведь она решалась задолго до появления компъютеров - то есть, должны быть аналитические формулы?