ВНИМАНИЕ! На форуме начался конкурс - астрофотография месяца СЕНТЯБРЬ!
0 Пользователей и 1 Гость просматривают эту тему.
Доброго времени Звездочеты.....вот пишу программу на дельфи для расчета фазы лунны по сегодняшней дате и времени........программа вроде считает, но результат пока выдает не правильный......Беру системную дату, разбираю ее (парсинг), перевожу в юлианский стиль.....потом вычисляю эклиптические координаты луны и сонца, потом беру отношение их.......Но где-то зарыт камень......не понимаю где, если нада я выложу исходники.....только помогите........за помощь отблагодорю, выложу программку для раздачи........
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;
На счет проги - то все работает, луна рисуется, будем надеятся что правильно, да и немного подправил код, инвертировал цвета, а то видимое - черное, я сделал как оно и есть - видимое белое, не видимое черное....