-
Notifications
You must be signed in to change notification settings - Fork 0
/
faza_ksiezyca.pas
89 lines (73 loc) · 3.19 KB
/
faza_ksiezyca.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
{cybermoon.w.interia.pl}
{$n+}
uses wincrt;{lub uses crt;}
var R,M,D,G,Min,S:Integer;
Function rang(x:Double):double;
var a,b:double;
begin
b:= x / 360;
A:= 360 * (b - int(b));
If (A < 0) Then A:= A + 360;
rang:= A;
End;
Function faza(Rok, Miesiac, Dzien, godzina,min, sec:double):double;
var A:Double; b:double; phi1,phi2,jdp,tzd,elm,ams,aml,asd:double;
begin
If (Miesiac > 2) Then begin
Miesiac:= Miesiac;
Rok:= Rok;
End;
If Miesiac <= 2 Then begin
Miesiac:= Miesiac + 12;
Rok:= Rok - 1;
End;
A:= int(Rok / 100);
b:= 2 - A + int(A / 4);
jdp:= int(365.25 * (Rok + 4716)) + int(30.6001 * (Miesiac + 1)) + Dzien + b +
((godzina + min / 60 + sec / 3600) / 24) - 1524.5;
jdp:= jdp;
tzd:= (jdp - 2451545) / 36525;
elm:= rang(297.8502042 + 445267.1115168 * tzd - (0.00163 * tzd * tzd) + tzd*tzd*tzd / 545868 - tzd*tzd*tzd*tzd / 113065000);
ams:= rang(357.5291092 + 35999.0502909 * tzd - 0.0001536 * tzd * tzd + tzd*tzd*tzd / 24490000);
aml:= rang(134.9634114 + 477198.8676313 * tzd - 0.008997 * tzd * tzd + tzd*tzd*tzd / 69699 - tzd*tzd*tzd*tzd / 14712000);
asd:= 180 - elm - (6.289 * sin((3.1415926535 / 180) * ((aml)))) +
(2.1 * sin((3.1415926535 / 180) * ((ams)))) -
(1.274 * sin((3.1415926535 / 180) * (((2 * elm) - aml)))) -
(0.658 * sin((3.1415926535 / 180) * ((2 * elm)))) -
(0.214 * sin((3.1415926535 / 180) * ((2 * aml)))) -
(0.11 * sin((3.1415926535 / 180) * ((elm))));
phi1:= (1 + Cos((3.1415926535 / 180) * (asd))) / 2;
tzd:= (jdp + (0.5 / 24) - 2451545) / 36525;
elm:= rang(297.8502042 + 445267.1115168 * tzd - (0.00163 * tzd * tzd) + tzd*tzd*tzd / 545868 - tzd*tzd*tzd*tzd / 113065000);
ams:= rang(357.5291092 + 35999.0502909 * tzd - 0.0001536 * tzd * tzd + tzd*tzd*tzd / 24490000);
aml:= rang(134.9634114 + 477198.8676313 * tzd - 0.008997 * tzd * tzd + tzd*tzd*tzd / 69699 - tzd*tzd*tzd*tzd / 14712000);
asd:= 180 - elm - (6.289 * sin((3.1415926535 / 180) * ((aml)))) +
(2.1 * sin((3.1415926535 / 180) * ((ams)))) -
(1.274 * sin((3.1415926535 / 180) * (((2 * elm) - aml)))) -
(0.658 * sin((3.1415926535 / 180) * ((2 * elm)))) -
(0.214 * sin((3.1415926535 / 180) * ((2 * aml)))) -
(0.11 * sin((3.1415926535 / 180) * ((elm))));
phi2:= (1 + Cos((3.1415926535 / 180) * (asd))) / 2;
if (phi2-phi1)<0 then phi1:=-1*phi1;
faza:=100*phi1;
end;
begin
write('Podaj Rok : ');readln(R);
write('Podaj Miesiac : ');readln(M);
write('Podaj Dzien : ');readln(D);
write('Podaj Godzine : ');readln(G);
write('Podaj Minute : ');readln(Min);
write('Podaj Sekunde : ');readln(S);
writeln;
writeln('Faza Ksiezyca to : ',faza(R,M,D,G,Min,S):0:4);
writeln;
writeln;
writeln;
writeln('Wynik dodatni (prawa strona ksiezyca oswietlona - elongacja dodatnia)');
writeln('Wynik ujemny (lewa strona ksiezyca oswietlona - elongacja ujemna)');
writeln('Now = 0.00');
writeln('I kwadra = 50.00');
writeln('Pelnia = 100.00');
writeln('III kwadra = -50.00');
readln;
end.