ВНИМАНИЕ! На форуме начался конкурс - астрофотография месяца НОЯБРЬ!
0 Пользователей и 1 Гость просматривают эту тему.
procedure TheLunCalc; const A1 = 24110.54841; a2 = 8640184.812 ; A3 = 0.093104 ; a4 = 0.0000062 ;var MD,T,W,L,X,Y,Z,e,e2,X1,Y1,Z1,So,ww,AT,Ss,S,Xg,Yg,Zg,Ao,Fo,F,AD:Double; A,Xl,Yl,X0,Y0:integer; q1,q2,q3,ao1,ao2,ao3,ao4,q,p,ER,r:Double; i,ii: Integer; Fshir,Ldolg,Sl:Double; Hvus:integer; Xn,Yn,Zn:double; Fzv,Wzv,Czv,Czv1,Wxz:Double; Xt,Yt,Zt:Double; Atpc,Btpc,ftpc,htpc,LunHH,PiL:Double; begin q:= (pi / 180); MD:=55476.0; Time:=16; T := (MD+Time/24 - 51544.5) / 36525; L := 218.32 + 481267.883 * T +6.29 * Sin(q * (134.9 + 477198.85 * T))- 1.27 * Sin(q * (259.2 - 413335.38 * T))+ 0.66 * Sin(q * (235.7 + 890534.23 * T))+ 0.21 * Sin(q * (269.9 + 954397.7 * T))-0.19 * Sin(q * (357.5 + 35999.05 * T))- 0.11 * Sin(q * (186.6 + 966404.05 * T)); W := 5.13 * Sin(q * (93.3 + 483202.03 * T)) + 0.28 * Sin(q * (228.2 + 960400.87 * T)) - 0.28 * Sin(q * (318.3 + 6003.18 * T)) - 0.17 * Sin(q * (217.6 - 407332.2 * T)); p := 0.9508 + 0.0518 * Cos(q * (134.9 + 477198.85 * T)) + 0.0095 * Cos(q * (259.2 - 413335.38 * T)) + 0.0078 * Cos(q * (235.7 + 890534.23 * T)) + 0.0028 * Cos(q * (269.9 + 954397.7 * T)); r := 1 / Sin(p * q); ER := 6378.136; X:= r * ER * Cos(q*L) * Cos(q*W); Y := r * ER * Sin(q*L) * Cos(q*W); Z := r * ER * Sin(q*W); e2 := 84381.488 - 46.815 * T - 0.00059 * Sqr(T) + 0.001813 * T * Sqr(T); e := e2/3600; e := (e*pi)/180 ;// в радианы X1 := X; Y1 := Y * cos(e) - Z * sin(e); Z1 := Y * sin(e) + Z * cos(e); So := A1+a2*T+a3*sqr(T)-a4*T*sqr(T); ww := 1.0027379093508; AT := (Time/24)*86400*ww; Ss := So+AT; S := Ss/240; S := (S*pi)/180;// звездное время в радианы Xg:=x1*cos(S)+Y1*sin(S); Yg:=(-X1)*sin(S)+Y1*cos(S); Zg:=Z1; Ao:=ArcTan2(yg,xg); Fo:=ArcTan2(Zg,Hypot(Xg, Yg)); LunX := Ao+180; LunY := Fo; fshir:=60; Ldolg:=30; Hvus:=0; fzv:=0.00335; Wxz:=1-0.00335; Fshir:=(Fshir*pi)/180; //Широту в радианы Ldolg:=(Ldolg*pi)/180; //Долготу в радианы Sl:=S+Ldolg; Form1.ListBox1.Items[2]:=FloatToStr(Sl); Czv1:= sqrt(1+0.00335*(0.00335-2)*(sqr(sin(fshir)))); // Вот здесь может я чегой то напортачил ? Czv:=(1/czv1); Wzv:=Czv*(Wxz*Wxz); Xn:=(ER*Czv+Hvus)*cos(Sl)*cos(fshir); Yn:=(ER*Czv+Hvus)*sin(Sl)*cos(fshir); Zn:=(ER*Wzv+Hvus)*sin(fshir); Xt:=X1-Xn; Yt:=Y1-Yn; Zt:=Z1-Zn; Atpc:=ArcTan2(Yt,Xt); Btpc:=ArcTan2(Zt,sqrt((Xt*Xt)+(Yt*Yt))); Pil:=180/pi; LunHH:=Pil*ArcSin(sin(fshir)*sin(Btpc)+cos(fshir)*cos(Btpc)*cos(sl-Atpc))+0.85; end;
Atpc=-3.153429 радиан
procedure TheLunCalc; //Âû÷èñëåíèå âîñõîäà è çàõîäà ëóíû const A1 = 24110.54841; a2 = 8640184.812 ; A3 = 0.093104 ; a4 = 0.0000062 ;var T,W,L,X,Y,Z,e,e2,X1,Y1,Z1,So,ww,AT,Ss,S,Xg,Yg,Zg,Ao,Fo,F,AD:Double; //Îñíîâíûå ïåðåìåííûå A,Xl,Yl,X0,Y0:integer; ao1,ao2,ao3,ao4,q,p,ER,r,ah:Double; i,ii: Integer; //Âñïîìîãàòåëüíûé ïåðåìåííûå //ïåðåìåííûå äëÿ ãåîöåíòð. âåêòîðà íàáëþäàòåëÿ Fshir,Ldolg,Sl:Double; //øèðîòà, äîëãîòà,ìåñòíîå çâåçäíîå âðåìÿ äëÿ ìåñòà Hvus:integer; //Âûñîòà íà óðîâíåì ãåîèäà Xn,Yn,Zn:double; //êîîðäèíàòû íà âûõîäå Fzv,Wzv,Czv,Czv1,Wxz:Double;//Âñïîìîãàòåëüíûå äëÿ ðàñ÷åòà // ïåðåìåííûå äëÿ òîïîöåíòðè÷åñêîãî âåêòîðà ëóíû Xt,Yt,Zt:Double; // ïåðåìåííûå äëÿ òîïîöåíòðè÷åñêîãî âåêòîðà ëóíû è ðàññ÷åòà âûñîòû Atpc,Btpc,ftpc,htpc,LunHH,PiL:Double; begin q:= (pi / 180); //Âû÷èñëÿåì åäèíè÷íûé ãåîöåíòðè÷åñêèé âåêòîð Ëóíû íà äàòó MD è âðåìÿ UT â ýêëèïòè÷åñêîé ñèñòåìå êîîðäèíàò T := (MD - 51544.5) / 36525; L := 218.32 + 481267.883 * T +6.29 * Sin(q * (134.9 + 477198.85 * T))- 1.27 * Sin(q * (259.2 - 413335.38 * T))+ 0.66 * Sin(q * (235.7 + 890534.23 * T))+ 0.21 * Sin(q * (269.9 + 954397.7 * T))-0.19 * Sin(q * (357.5 + 35999.05 * T))- 0.11 * Sin(q * (186.6 + 966404.05 * T)); W := 5.13 * Sin(q * (93.3 + 483202.03 * T)) + 0.28 * Sin(q * (228.2 + 960400.87 * T)) - 0.28 * Sin(q * (318.3 + 6003.18 * T)) - 0.17 * Sin(q * (217.6 - 407332.2 * T)); p := 0.9508 + 0.0518 * Cos(q * (134.9 + 477198.85 * T)) + 0.0095 * Cos(q * (259.2 - 413335.38 * T)) + 0.0078 * Cos(q * (235.7 + 890534.23 * T)) + 0.0028 * Cos(q * (269.9 + 954397.7 * T)); r := 1 / Sin(p * q); ER := 6378.136; X:= r * ER * Cos(q*L) * Cos(q*W); Y := r * ER * Sin(q*L) * Cos(q*W); Z := r * ER * Sin(q*W); //Âû÷åñëåíèå âåêòîðà Ëóíû â ýêâàòîðèàëüíîé ñèñòåìå êîîðäèíàò e2 := 84381.488 - 46.815 * T - 0.00059 * Sqr(T) + 0.001813 * T * Sqr(T); e := e2/3600; e := (e*pi)/180 ;//èç ãðàä. â ðàäèàíû X1 := X; Y1 := Y * cos(e) - Z * sin(e); Z1 := Y * sin(e) + Z * cos(e); //Âû÷èñëåíèå ñðåäíåãî çâåçäíîãî âðåìåíè íà äàòó MD è âðåìÿ UT. T := (Int(MD) - 51544.5) / 36525; So := A1+a2*T+a3*sqr(T)-a4*T*sqr(T); ww := 1.002737909350795; AT := (MD-int(MD))*86400*ww; Ss := So+AT; S := Ss/240; S := (S*pi)/180;//âðåìÿ èç ãðàäóñîâ â ðàäèàíû //Ïåðåâîä âåêòîðà Ëóíû â ãðèíâè÷ ñèñòåìó êîîðäèíàò Xg:=x1*cos(S)+Y1*sin(S); Yg:=(-X1)*sin(S)+Y1*cos(S); Zg:=Z1; Ao:=ArcTan2(yg,xg); Fo:=ArcTan2(Zg,Hypot(Xg, Yg)); //êîîðäèíàòû ëóíû íà êàðòå LunX := Ao+180; LunY := Fo; // Áëîê âûâîäà íà ýêðàí ïðîìåæóòî÷íûõ äàííûõ Form1.ListBox1.Items[0]:=FloatToStr(Lunx)+' //ïîëîæåíèå ëóíû íà êàðòå îñü Õ'; Form1.ListBox1.Items[1]:=FloatToStr(LunY)+' //ïîëîæåíèå ëóíû íà êàðòå îñü Y'; // Âû÷èñëåíèå ãåîöåíòðè÷åñêîãî âåêòîðà íàáëþäàòåëÿ íà MD fshir:=60; //ïåðåìåííàÿ øèðîòû Ldolg:=30; //ïåðåìåííàÿ äîëãîòû Hvus:=0; // ïåðåìåííàÿ âûñîòû ãåîèäà fzv:=0.00345709; // ñæàòèå çåìëè óñðåäíåííàÿ îò (1/298,26) Wxz:=1-0.00345709; Fshir:=(Fshir*pi)/180; //øèðîòà â ðàäèàíû Ldolg:=(Ldolg*pi)/180; //äîëãîòà â ðàäèàíû Sl:=S+Ldolg; // ìåñòíîå çâåçäíîå âðåìÿ Form1.ListBox1.Items[2]:=FloatToStr(Sl)+' // ìåñòíîå çâåçäíîå âðåìÿ'; Czv1:= sqrt(1+0.00345709*(0.00335-2)*(sqr(sin(fshir)))); //??? Óòî÷íèòü Czv:=(1/czv1); Wzv:=Czv*(Wxz*Wxz); Xn:=(ER*Czv+Hvus)*cos(Sl)*cos(fshir); Yn:=(ER*Czv+Hvus)*sin(Sl)*cos(fshir); Zn:=(ER*Wzv+Hvus)*sin(fshir); Form1.ListBox1.Items[3]:=FloatToStr(Xn)+' //âåêòîð íàáëþäàòåëÿ Õ íà MD'; Form1.ListBox1.Items[4]:=FloatToStr(Yn)+' //âåêòîð íàáëþäàòåëÿ Y íà MD'; Form1.ListBox1.Items[5]:=FloatToStr(Zn)+' //âåêòîð íàáëþäàòåëÿ Z íà MD'; // ÂÛ×ÈÑËÅÍÈÅ ÒÎÏÎÖÅÍÒÐÈ×ÅÑÊÎÃÎ ÂÅÊÒÎÐÀ ËÓÍÛ Xt:=X1-Xn; Yt:=Y1-Yn; Zt:=Z1-Zn; Form1.ListBox1.Items[6]:=FloatToStr(Xt)+' //òîïîöåíòðè÷åñêèé âåêòîð ëóíû Õ'; Form1.ListBox1.Items[7]:=FloatToStr(Yt)+' //òîïîöåíòðè÷åñêèé âåêòîð ëóíû Y'; Form1.ListBox1.Items[8]:=FloatToStr(Zt)+' //òîïîöåíòðè÷åñêèé âåêòîð ëóíû Z'; //Ðàçëîæåíèå òîïîöåíòðè÷åñêîãî Âåêòîðà íà òîïîöåíòðè÷åñêèå êîîðäèíàòû Atpc:=ArcTan2(Yt,Xt); Btpc:=ArcTan2(Zt,sqrt((Xt*Xt)+(Yt*Yt))); //Âûñîòà Ëóíû íàä ãîðèçîíòîì Pil:=180/pi; LunHH:=Pil*ArcSin(sin(fshir)*sin(Btpc)+cos(fshir)*cos(Btpc)*cos(sl-Atpc))+0.85; LunHHH:=LunHH; Form1.ListBox1.Items[9]:=FloatToStr(Atpc)+' //Òîïîöåíòð. êîîðäèíàòû'; Form1.ListBox1.Items[10]:=FloatToStr(Btpc)+' //Òîïîöåíòð. êîîðäèíàòû'; Form1.ListBox1.Items[11]:=FloatToStr(LunHHH)+' //Âûñîòà ëóíû íàä ãîðèçîíòîì'; Form1.ListBox1.Items[12]:='_____________________________________________________'; Form1.ListBox1.Items[13]:='_____________________________________________________'; end;procedure TForm1.Button1Click(Sender: TObject);var k:integer; Tk:double;begin for k := 0 to N do begin Tk:=k*Atx ; MD:=MD+(Tk/24); TheLunCalc; Form1.ListBox1.Items[14+k]:=FloatTostr(Tk)+' //'+FloatTostr(LunHHH);// ïå÷àòü äëÿ íàãëÿäíîñòè è ïðîâåðêè end; end;procedure TForm1.FormCreate(Sender: TObject); begin // Âû÷èñëÿåì ìîäèôèöèðîâàííóþ Þëèàíñêóþ äàòó íà ìîìåíò ðàñ÷åòà Year:=2010; Month:=10; Day:=7; Hour:=0; Minute:=0; Atx:=0.5; N:=round(24/Atx); q1:=int((Month+9)/12); q2:=int(7*((Year+q1)/4)); q3:=int((275*Month)/9)+Day; Time:=Hour + Minute/60; MD:=367*Year-q2+q3-678987+(Time/24);end;
atpc=-3.129757