3. Програма на мові програмування Delphi.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls,Unit2, jpeg;
type
TForm1 = class(TForm)
Panel1: TPanel;
Image1: TImage;
StaticText1: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
StaticText4: TStaticText;
StaticText5: TStaticText;
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
StaticText6: TStaticText;
Image2: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var PAR : string;
begin
PAR:=Edit1.Text;
If PAR='orion 17' Then
begin
Form2:=TForm2.Create(Application);
Form2.ShowModal;
Form2.Free;
Edit1.Clear;
end
else
begin
if MessageDlg('Пароль невірний! Значення " '+Edit1.Text+' " не є паролем! Зверніться до розробника',
mtError,[mbOK],0)=mrOK then
Edit1.Clear;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Picture.LoadFromFile('star.jpg');
Image2.Picture.LoadFromFile('star2.jpg');
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Math,
Dialogs, StdCtrls, ExtCtrls,Unit3,KonstPLN,Eagth,Mars,Jupiter,Saturn,Mercury,
Venus,Uran,Neptun,Pluton, Common,Unit4;
type
TForm2 = class(TForm)
Panel1: TPanel;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Image1: TImage;
Image2: TImage;
RadioButton1: TRadioButton;
---------------------------
RadioButton9: TRadioButton;
StaticText1: TStaticText;
----------------------------
StaticText5: TStaticText;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
---------------------------
Label46: TLabel;
procedure RadioButton1Click(Sender: TObject);
----------------------------------------------
procedure RadioButton9Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
Form3: TForm3;
PLN,D0,M0,R0,i,DR,n : integer;
FI,LB,k,S0,P0,RM, ED,EG,ER,ER0,ESD,EH,ER1,EGD,
AD,AG,AR,x,AR0,ASD,AH,AR1,AGD, AAD1,ARS,AZE,AZP,
ABD,AV,AYD,AYDS,AAD0,AAD,AA,AAM,AAS,AID1,AID2,AID,AB,ABM,AF, AT1,ATK,ATKL,
ATKLM,AP,AT2,AT3,ATG,ATS,ATSL,ATSLM,ATZ,ATZL,ATZLM,AZ,AAH,ABG,ATKLH,
ATSLH,ATZLH :real;
implementation
{$R *.dfm}
procedure TForm2.Button4Click(Sender: TObject);
begin
MessageDlg('Інформація! Деякі географічні координати:'+#13+'Чортків FI=49.03, LB=25.83'+#13+'Тернопіль FI=49.6, LB=25.6'+#13+'Львів FI=49.8, LB=24'+#13+'Київ FI=50.5, LB=30.5'+#13+'Лондон(Грінвіч) FI=51.6, LB=0'
,mtInformation,[mbOK],0);
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
close;
end;
procedure TForm2.RadioButton1Click(Sender: TObject);
begin
PLN:=1;ZPL:=1; ZPL1:=1;
Image1.Picture.LoadFromFile('mercury.jpg');
end;
------------------------------------------------------
procedure TForm2.RadioButton9Click(Sender: TObject);
begin
PLN:=9; ZPL:=9; ZPL1:=9;
Image1.Picture.LoadFromFile('pluton.jpg');
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Image1.Picture.LoadFromFile('star1.jpg');
Image2.Picture.LoadFromFile('sun.bmp');
ComboBox1.ItemIndex:=8;
ComboBox2.ItemIndex:=0;
ComboBox3.ItemIndex:=0;
Label4.Visible:=false;
----------------------
Label46.Visible:=false;
Button2.Enabled:=false;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
Button2.Enabled:=false;
Label4.Visible:=false;
------------------------
Label46.Visible:=false;
if PLN=0 then //захист від помилки
begin
if MessageDlg(' Ви забули вибрати планету!'+#13+'По замовчуванню буде вибрана Земля.'
,mtError,[mbOK],0)=mrOK then
begin
RadioButton3.Checked:=true;
PLN:=3;
Image1.Picture.LoadFromFile('eath.jpg');
end;
end;
D0:=StrToInt(ComboBox1.Text);
ZD:=StrToInt(ComboBox1.Text);
ZD1:=StrToInt(ComboBox1.Text);
if (D0<=0) or( D0>31) then //захист від дурня
begin
if MessageDlg('Помилка введення номера дня місяця!'
,mtError,[mbOK],0)=mrOK then
begin
ComboBox1.ItemIndex:=8;
D0:=StrToInt(ComboBox1.Text);
ZD:=StrToInt(ComboBox1.Text);
ZD1:=StrToInt(ComboBox1.Text);
end;
end;
if ComboBox2.ItemIndex=0 then
begin
M0:=1;ZM:=1; ZM1:=1;
end;
-----------------------------------
if ComboBox2.ItemIndex=11 then
begin
M0:=12;ZM:=12; ZM1:=12;
end;
if M0=0 then //захист від помилки
begin
if MessageDlg('Введення значення місяця цифрою недопустиме!',
mtError,[mbOK],0)=mrOK then
begin
ComboBox2.ItemIndex:=0;
M0:=1;
ZM:=1;
ZM1:=1;
end;
end;
R0:=StrToInt(ComboBox3.Text);
ZR:=StrToInt(ComboBox3.Text);
ZR1:=StrToInt(ComboBox3.Text);
if (R0<1990) or (R0>2100) then //захист від помилки
begin
if MessageDlg('Помилка граничних меж дат спостереження 1990-2100 рр.'
,mtError,[mbOK],0)=mrOK then
begin
ComboBox3.ItemIndex:=0;
R0:=StrToInt(ComboBox3.Text);
ZR:=StrToInt(ComboBox3.Text);
ZR1:=StrToInt(ComboBox3.Text);
end;
end;
FI:=StrToFloat(Edit1.Text);
if abs(FI)>90 then //захист від помилки
begin
if MessageDlg('Помилка введення географічної широти місця спостереження!'+#13+' Має бути в межах +-90 градусів',
mtError,[mbOK],0)=mrOK then
begin
Edit1.Text:='56';
FI:=StrToFloat(Edit1.Text);
end;
end;
LB:=StrToFloat(Edit2.Text);
if LB<0 then
begin
LB:=360+LB;
end;
i:=0;
if R0=1992 or 1996 or 2000 or 2004 or 2008 or 2012 then //високосні роки
begin
i:=1 //29 лютого
end;
case M0 of //DR номер дня моменту спостереження
1: begin DR:=D0 ; n:=0 ; k:=-0.040;end; //з початку року
2: begin DR:=31+D0; n:=0;k:=-0.094;end;
3: begin DR:=59+i+D0; n:=0;k:=-0.13;end; //n мітка пори року 0-зима,1-літо
4: begin DR:=59+i+31+D0 ; n:=1;k:=-0.131;end;
5: begin DR:=59+i+61+D0; n:=1;k:=-0.103;end; //k середня поправка зоряного часу
6: begin DR:=59+i+92+D0; n:=1;k:=-0.051;end;
7: begin DR:=59+i+122+D0; n:=1;k:=0.013;end;
8: begin DR:=59+i+153+D0; n:=1;k:=0.073;end;
9: begin DR:=59+i+184+D0; n:=1;k:=0.107;end;
10: begin DR:=59+i+214+D0; n:=0;k:=0.114;end;
11: begin DR:=59+i+245+D0; n:=0;k:=0.083;end;
12: begin DR:=59+i+275+D0; n:=0;k:=0.028;end;
end;
S0:=int((12-M0)/10); //формула 1
P0:=int((S0*12+M0-2)*30.59+D0);
RM:=int((R0-S0-1900)*365.25+P0); //номер дати спостереження з 1 березня 1900р.
if RM<=32851 then //захист від помилки
begin
if MessageDlg('Помилка введення дати спостереження!'+#13+' Має бути не раніше 9 січня 1990р.',
mtError,[mbOK],0)=mrOK then
begin
ComboBox1.ItemIndex:=8;
D0:=StrToInt(ComboBox1.Text);
ComboBox2.ItemIndex:=0;
M0:=1;
ComboBox3.ItemIndex:=0;
R0:=StrToInt(ComboBox3.Text);
end;
end;
case PLN of
1: begin Eagth1(EG,ER,ER0,ESD,EH,ER1,EGD, ED,DR);
Mercury1(AD,AG,AR,x,AR0,ASD,AH,AR1,AGD,RM,EG);
Mercury2(AAD1,ARS,AZE,AZP,ABD,AV,AYD,AYDS,AAD0,AAD,AA,AAM,AAS,AID1,AID2,AID,AB,ABM,AF,
ER,AG,EG,AR, AAH,ABG,R0);
Mercury3(AT1,ATK,ATKL,ATKLM,AP,AT2,AT3,ATG,ATS,ATSL,ATSLM,ATZ,ATZL,ATZLM,AZ,AA,EG,k,LB,
AYD,AV,FI,AB, ATKLH,ATSLH,ATZLH,n);end; //запуск процедур в модулях
2: begin Eagth1(EG,ER,ER0,ESD,EH,ER1,EGD, ED,DR);
Venus1(AD,AG,AR,x,AR0,ASD,AH,AR1,AGD,RM,EG);
Venus2(AAD1,ARS,AZE,AZP,ABD,AV,AYD,AYDS,AAD0,AAD,AA,AAM,AAS,AID1,AID2,AID,AB,ABM,AF,
ER,AG,EG,AR, AAH,ABG,R0);
Venus3(AT1,ATK,ATKL,ATKLM,AP,AT2,AT3,ATG,ATS,ATSL,ATSLM,ATZ,ATZL,ATZLM,AZ,AA,EG,k,LB,
AYD,AV,FI,AB, ATKLH,ATSLH,ATZLH,n);end;
3: Eagth1(EG,ER,ER0,ESD,EH,ER1,EGD, ED,DR);
4: begin Eagth1(EG,ER,ER0,ESD,EH,ER1,EGD, ED,DR);
Mars1(AD,AG,AR,x,AR0,ASD,AH,AR1,AGD,RM,EG);
Mars2(AAD1,ARS,AZE,AZP,ABD,AV,AYD,AYDS,AAD0,AAD,AA,AAM,AAS,AID1,AID2,AID,AB,ABM,AF,
ER,AG,EG,AR, AAH,ABG,R0);
Mars3(AT1,ATK,ATKL,ATKLM,AP,AT2,AT3,ATG,ATS,ATSL,ATSLM,ATZ,ATZL,ATZLM,AZ,AA,EG,k,LB,
AYD,AV,FI,AB, ATKLH,ATSLH,ATZLH,n);end;
5: begin Eagth1(EG,ER,ER0,ESD,EH,ER1,EGD, ED,DR);
Jupiter1(AD,AG,AR,x,AR0,ASD,AH,AR1,AGD,RM,EG);
Jupiter2(AAD1,ARS,AZE,AZP,ABD,AV,AYD,AYDS,AAD0,AAD,AA,AAM,AAS,AID1,AID2,AID,AB,ABM,AF,
ER,AG,EG,AR, AAH,ABG,R0);
Jupiter3(AT1,ATK,ATKL,ATKLM,AP,AT2,AT3,ATG,ATS,ATSL,ATSLM,ATZ,ATZL,ATZLM,AZ,AA,EG,k,LB,
AYD,AV,FI,AB, ATKLH,ATSLH,ATZLH,n);end;
6: begin Eagth1(EG,ER,ER0,ESD,EH,ER1,EGD, ED,DR);
Saturn1(AD,AG,AR,x,AR0,ASD,AH,AR1,AGD,RM,EG);
Saturn2(AAD1,ARS,AZE,AZP,ABD,AV,AYD,AYDS,AAD0,AAD,AA,AAM,AAS,AID1,AID2,AID,AB,ABM,AF,
ER,AG,EG,AR, AAH,ABG,R0);
Saturn3(AT1,ATK,ATKL,ATKLM,AP,AT2,AT3,ATG,ATS,ATSL,ATSLM,ATZ,ATZL,ATZLM,AZ,AA,EG,k,LB,
AYD,AV,FI,AB, ATKLH,ATSLH,ATZLH,n);end;
7: begin Eagth1(EG,ER,ER0,ESD,EH,ER1,EGD, ED,DR);
Uran1(AD,AG,AR,x,AR0,ASD,AH,AR1,AGD,RM,EG);
Uran2(AAD1,ARS,AZE,AZP,ABD,AV,AYD,AYDS,AAD0,AAD,AA,AAM,AAS,AID1,AID2,AID,AB,ABM,AF,
ER,AG,EG,AR, AAH,ABG,R0);
Uran3(AT1,ATK,ATKL,ATKLM,AP,AT2,AT3,ATG,ATS,ATSL,ATSLM,ATZ,ATZL,ATZLM,AZ,AA,EG,k,LB,
AYD,AV,FI,AB, ATKLH,ATSLH,ATZLH,n);end;
8: begin Eagth1(EG,ER,ER0,ESD,EH,ER1,EGD, ED,DR);
Neptun1(AD,AG,AR,x,AR0,ASD,AH,AR1,AGD,RM,EG);
Neptun2(AAD1,ARS,AZE,AZP,ABD,AV,AYD,AYDS,AAD0,AAD,AA,AAM,AAS,AID1,AID2,AID,AB,ABM,AF,
ER,AG,EG,AR, AAH,ABG,R0);
Neptun3(AT1,ATK,ATKL,ATKLM,AP,AT2,AT3,ATG,ATS,ATSL,ATSLM,ATZ,ATZL,ATZLM,AZ,AA,EG,k,LB,
AYD,AV,FI,AB, ATKLH,ATSLH,ATZLH,n);end;
9: begin Eagth1(EG,ER,ER0,ESD,EH,ER1,EGD, ED,DR);
Pluton1(AD,AG,AR,x,AR0,ASD,AH,AR1,AGD,RM,EG);
Pluton2(AAD1,ARS,AZE,AZP,ABD,AV,AYD,AYDS,AAD0,AAD,AA,AAM,AAS,AID1,AID2,AID,AB,ABM,AF,
ER,AG,EG,AR, AAH,ABG,R0);
Pluton3(AT1,ATK,ATKL,ATKLM,AP,AT2,AT3,ATG,ATS,ATSL,ATSLM,ATZ,ATZL,ATZLM,AZ,AA,EG,k,LB,
AYD,AV,FI,AB, ATKLH,ATSLH,ATZLH,n);end;
end;
if PLN=3 then
begin
Label4.Visible:=true;
Label14.Visible:=true;
Label27.Visible:=true;
Label27.Caption:=FloatToStrF(EG,ffGeneral,7,3);
Label5.Visible:=true;
Label15.Visible:=true;
Label28.Visible:=true;
Label28.Caption:=FloatToStrF(ER,ffGeneral,6,3);
D0:=0;
M0:=0;
R0:=0;
end
else
begin
Label4.Visible:=true;
Label14.Visible:=true;
Label27.Visible:=true;
Label27.Caption:=FloatToStrF(AG,ffGeneral,7,3);
Label5.Visible:=true;
Label15.Visible:=true;
Label28.Visible:=true;
Label28.Caption:=FloatToStrF(AR,ffGeneral,6,3);
Label6.Visible:=true;
Label29.Visible:=true;
Label16.Visible:=true;
Label30.Visible:=true;
Label17.Visible:=true;
Label29.Caption:=FloatToStrF(AAH,ffGeneral,2,0);
Label30.Caption:=FloatToStrF(AAM,ffGeneral,4,2);
Label7.Visible:=true;
Label31.Visible:=true;
Label18.Visible:=true;
Label41.Visible:=true;
Label42.Visible:=true;
Label31.Caption:=FloatToStrF(ABG,ffGeneral,2,0);
Label41.Caption:=FloatToStrF(ABM,ffGeneral,4,2);
Label8.Visible:=true;
Label32.Visible:=true;
Label19.Visible:=true;
Label32.Caption:=FloatToStrF(AYDS,ffGeneral,3,1);
Label9.Visible:=true;
Label33.Visible:=true;
Label33.Caption:=FloatToStrF(AF,ffGeneral,3,2);
Label10.Visible:=true;
Label34.Visible:=true;
Label21.Visible:=true;
Label35.Visible:=true;
Label23.Visible:=true;
Label34.Caption:=FloatToStrF(ATSLH,ffGeneral,2,0);
Label35.Caption:=FloatToStrF(ATSLM,ffGeneral,4,2);
Label11.Visible:=true;
Label36.Visible:=true;
Label20.Visible:=true;
Label37.Visible:=true;
Label24.Visible:=true;
Label36.Caption:=FloatToStrF(ATKLH,ffGeneral,2,0);
Label37.Caption:=FloatToStrF(ATKLM,ffGeneral,4,2);
Label12.Visible:=true;
Label38.Visible:=true;
Label22.Visible:=true;
Label39.Visible:=true;
Label25.Visible:=true;
Label38.Caption:=FloatToStrF(ATZLH,ffGeneral,2,0);
Label39.Caption:=FloatToStrF(ATZLM,ffGeneral,4,2);
Label13.Visible:=true;
Label40.Visible:=true;
Label26.Visible:=true;
Label40.Caption:=FloatToStrF(AZ,ffGeneral,4,2);
if abs(int(AG-EG))<=5 then
begin
Label43.Visible:=true;
end;
Label44.Visible:=true;
Label45.Visible:=true;
Label46.Visible:=true;
Label45.Caption:=FloatToStrF(AV,ffGeneral,6,3);
ZAA:=AA;
ZAB:=AB;
ZAA1:=AA;
ZAB1:=AB;
D0:=0;
M0:=0;
R0:=0;
Button2.Enabled:=true;
end;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Form3:=TForm3.Create(Application);
Form3.ShowModal;
Form3.Free;
Button2.Enabled:=false;
end;
end.
unit KonstPLN;
interface
Const AO=149597870; N0=0.01; //астрономічна одиниця км
Eri=23.452295;Ari=25.2;Jri=3.1;Mri=7;Vri=3.4;Sri=26.8;
Uri=98;Nri=29;Pri=1;//нахил екватора до екліптики
Eao=1;Aao=1.523688;Jao=5.202803;Mao=0.387099;Vao=0.723322;Sao=9.538843;
Uao=19.190978;Nao=30.070672;Pao=39.51774;//велика піввісь орбіти
Eeo=0.016738;Aeo=0.09334;Jeo=0.048387;Meo=0.20562;Veo=0.006806;Seo=0.056;
Ueo=0.0472;Neo=0.008553;Peo=0.253;//ексцентриситет орбіти
Eap=104.24375;Aap=335.7197;Jap=15.2;Map=77.31552;Vap=131.53526;Sap=86.25;
Uap=171.14;Nap=45.5;Pap=225;//довгота перигелію орбіти
Etd=365.24219;Atd=686.9797;Jtd=4332.5879;Mtd=87.9693;Vtd=224.7008;Std=10759.201;
Utd=30685.93;Ntd=60187.65;Ptd=90731.2;//період обертання навколо Сонця дн.
Ere=6378.14;Are=3390;Jre=71492;Mre=2440;Vre=6052;Sre=60268;
Ure=24300;Nre=25000;Pre=1500;//екваторіальний радіус планети км.
Evo=29.77;Avo=24.22;Jvo=13.07;Mvo=48.89;Vvo=35;Svo=9.65;
Uvo=6.8;Nvo=5.43;Pvo=4.74;//орбітальна швидкість планети км/с
Avy=49.966942;Jvy=40.690276;Mvy=48.450552;Vvy=76.998886;Svy=113.99442;
Uvy=74.590276;Nvy=131.95776;Pvy=109.9036;//довгота висхідного вузла орбіти
Aie=1.85;Jie=1.3069442;Mie=7.0033332;Vie=3.3938886;Sie=2.491111;
Uie=0.772777;Nie=1.7763886;Pie=17.313332;//нахил орбіти до екліптики
implementation
begin
end.
unit Eagth;
interface
Uses Math,KonstPLN;
Const ED5=9; EG5=108.6; ER5=0.9833; // початкові координати Землі 9 січня 1990р.
Procedure Eagth1(var EG,ER,ER0,ESD,EH,ER1,EGD,ED:real;var DR:integer);
implementation
Procedure Eagth1;
begin
ED:=ED5; EG:=EG5; ER:=ER5;
ER0:=Evo*86400/AO*N0; {формула 4} //шлях проходження за N3 дні
ESD:=(PI*sqr(Eao)*sqrt(1-sqr(Eeo))/Etd)*N0;//формула 3 площа еліпса орбіти за N3дні
Repeat
ED:=ED+N0; //2 закон Кеплера
EH:=2*ESD/ER; //радіус-вектор через N3 днів
ER1:=sqrt(sqr(EH)+sqr(ER-sqrt(abs(sqr(ER0)-sqr(EH)))));//формула 5
EGD:=arctan((1/ER1*EH)/sqrt(1-sqr(1/ER1*EH)))*180/PI; //формула 6
EG:=EG+EGD; //кут проходу за N3 дні
while EG>=360 do
begin
EG:=EG-360
end;
ER1:=(Eao*(1-sqr(Eeo)))/(1+Eeo*cos((EG-Eap)*PI/180)); //формула 2
ER:=ER1;
Until DR<=ED; //обчислення до моменту спостереження
end;
end.
unit Mars;
interface
Uses KonstPLN,Eagth,Math;
Const AD5=32852; //номер дня 9 січня 1990р. з 1 березня 1900р.
AG5=235.0; AR5=1.538; //початкове положення Марса 9 січня 1990р.
Procedure Mars1(var AD,AG,AR,x,AR0,ASD,AH,AR1,AGD,RM,EG:real);
Procedure Mars2(var AAD1,ARS,AZE,AZP,ABD,AV,AYD,AYDS,AAD0,AAD,AA,AAM,AAS,AID1,AID2,AID,AB,
ABM,AF, ER,AG,EG,AR,AAH,ABG:real;var R0:integer);
Procedure Mars3(var AT1,ATK,ATKL,ATKLM,AP,AT2,AT3,ATG,ATS,ATSL,ATSLM,ATZ,ATZL,ATZLM,AZ,
AA,EG,k,LB,AYD,AV,FI,AB,ATKLH,ATSLH,ATZLH:real;var n:integer);
implementation
Procedure Mars1;
begin
AD:=AD5; AG:=AG5; AR:=AR5; x:=0;
AR0:=Avo*86400/AO*N0; //формула 4 шлях проходження за N4 дні
ASD:=(PI*sqr(Aao)*sqrt(1-sqr(Aeo))/Atd)*N0;//формула 3 площа еліпса орбіти за N4 дні
Repeat
AD:=AD+N0; //2 закон Кеплера
AH:=2*ASD/AR; //радіус-вектор через N4 дні
AR1:=sqrt(sqr(AH)+sqr(AR-sqrt(abs(sqr(AR0)-sqr(AH)))));//формула 5
AGD:=arctan((1/AR1*AH)/sqrt(1-sqr(1/AR1*AH)))*180/PI;//формула 6
AG:=AG+AGD; //кут проходу за N4 дні
While AG>=360 do
begin
AG:=AG-360
end;
AR1:=(Aao*(1-sqr(Aeo)))/(1+Aeo*cos((AG-Aap)*PI/180));//формула 2
AR:=AR1;
x:=x+1 //кількість циклів обчислення
Until RM<=AD; //обчислення до моменту спостереження
end;//Mars1
Procedure Mars2;
begin
AAD1:=arctan((ER*sin((AG-EG)*PI/180))/(AR-ER*cos((AG-EG)*PI/180)))*180/PI;//зміщення прямого
ARS:=sin((AG-Avy)*PI/180)*sin(Aie*PI/180); //піднесення, формула 7
AZE:=AR*ARS;
AZP:=sqrt(sqr(ER*sin((EG-AG)*PI/180))+sqr(AR*sqrt(1-sqr(ARS))-ER*cos((EG-AG)*PI/180)));
ABD:=arctan(AZE/AZP)*180/PI; //зміщення схилення, формула 8
AV:=sqrt(sqr(AZE)+sqr(AZP));//лінійна відстань між Землею і Марсом, формула 9
AYD:=2*arctan(Are/(AV*AO))*180/PI;//кутовий діаметр Марса, формула 10
AYDS:=AYD*3600;
AAD0:=arctan(sqrt(1-sqr((sqr(AV)+sqr(AR)-sqr(ER))/(2*AV*AR)))/((sqr(AV)+sqr(AR)-sqr(ER))/
(2*AV*AR)))*180/PI;
AAD:=sqrt(abs(sqr(AAD0)-sqr(ABD)));
If AAD1<0 then
begin
AAD:=-AAD;
end;
AA:=(AG+AAD)/15; //пряме піднесення Марса
If AA>=24 then
begin
AA:=AA-24;
end;
If AA<0 then
begin
AA:=AA+24;
end;
AAH:=int(AA);
AAM:=frac(AA)*60;
AAS:=frac(AAM)*60;
AID1:=sin((AA*15)*PI/180)*(Eri-0.00013011111*(R0-1900));//схилення точки екліптики
AID2:=arctan((sin((180-AA*15)*PI/180)*sin((Eri-0.00013011111*(R0-1900))*PI/180))/
(sqrt(1-sqr(sin((180-AA*15)*PI/180)*sin((Eri-0.00013011111*(R0-1900))*PI/180)))))*
180/PI; //те саме другим методом
AID:=(AID1+AID2)/2; //їх середнє значення
AB:=AID+ABD; //Схилення Марса
ABG:=int(AB);
ABM:=frac(AB)*60;
AF:=(1/2)+(cos(AAD0*PI/180)/2); //фаза диска Марса, формула 11
end;//Mars2
Procedure Mars3;
begin
AT1:=AA-(EG/15+k);
If AT1<0 then
begin
AT1:=AT1+24;
end;
ATK:=AT1/1.002738; //час кульмінації Марса, формула 14
ATKL:=ATK-LB/15+n; //місцевий час кульмінації
if ATKL<0 then
begin
ATKL:=ATKL+24;
end;
ATKLH:=int(ATKL); ATKLM:=frac(ATKL)*60;
AP:=90+0.59+(AYD/2)-(arctan(Ere/(AV*AO))*180/PI);
AT2:=(cos(AP*PI/180)-sin(FI*PI/180)*sin(AB*PI/180))/(cos(FI*PI/180)*cos(AB*PI/180));
AT3:=arctan(sqrt(1-sqr(AT2))/AT2)*180/PI;//годинний кут сходу і заходу Марса
if AT3<=0 then //формула 12
begin
AT3:=AT3+180;
end;
ATG:=AT3/15;
ATS:=ATK-ATG; //час сходу Марса
if ATS<0 then
begin
ATS:=ATS+24;
end;
ATSL:=ATS-LB/15+n; //місцевий час сходу
if ATSL<0 then
begin
ATSL:=ATSL+24;
end;
ATSLH:=int(ATSL); ATSLM:=frac(ATSL)*60;
ATZ:=ATK+ATG; //час заходу Марса
if ATZ>=24 then
begin
ATZ:=ATZ-24;
end;
ATZL:=ATZ-LB/15+n; //місцевий час заходу
if ATZL<0 then
begin
ATZL:=ATZL+24;
end;
ATZLH:=int(ATZL); ATZLM:=frac(ATZL)*60;
AZ:=arctan((cos(AB*PI/180)*sin(AT3*PI/180)/sin(AP*PI/180))/sqrt(1-sqr((cos(AB*PI/180)*
sin(AT3*PI/180))/sin(AP*PI/180))))*180/PI; //азимут Марса при сході і заході
if AB>0 then //формула 13
begin
AZ:=180-AZ;
end;
end;//Mars3
end.
unit Common;
interface
var
ZPL,ZD,ZM,ZR,ZPL1,ZD1,ZM1,ZR1 : integer;
ZAA,ZAB,ZAA1,ZAB1 :real;
implementation
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, Common,Math,Unit4;
type
TForm3 = class(TForm)
Image1: TImage;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Button1: TButton;
Label1: TLabel;
-----------------------
Label31: TLabel;
StaticText1: TStaticText;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Mas = array[1..311] of real;
var
Form3: TForm3;
ZA,ZB,ZP : Mas;
ZAG,ZBG : integer;
ZAM,ZBM,x,y,x3,y3 : real;
x4,y4,x5,y5,x0,y0,x1,y1,x2,y2 :variant;
implementation
{$R *.dfm}
procedure TForm3.FormCreate(Sender: TObject);
var i:integer;
begin
SpeedButton2.visible:=false;
Label1.Visible:=false;
Label2.Visible:=false;
Label3.Visible:=false;
Label4.Visible:=false;
Label5.Visible:=false;
Label6.Visible:=false;
Image1.Canvas.Brush.Color:=clBlack;
Image1.Canvas.Brush.Style:=bsSolid;
Image1.Canvas.Rectangle(0,0,1010,255);
Image1.Canvas.pen.color:=clWhite;
Image1.Canvas.Moveto (0,0);
Image1.Canvas.LineTo (1000,0);
Image1.Canvas.LineTo (1000,250);
Image1.Canvas.LineTo (0,250);
Image1.Canvas.LineTo (0,0);
Image1.Canvas.MoveTo(0,139);
Image1.Canvas.LineTo (1000,139);
//ruscu
Image1.Canvas.MoveTo(1000,0);
Image1.Canvas.LineTo (1005,0);
Image1.Canvas.MoveTo(1000,28);
Image1.Canvas.LineTo (1005,28);
Image1.Canvas.MoveTo(1000,56);
Image1.Canvas.LineTo (1005,56);
Image1.Canvas.MoveTo(1000,83);
Image1.Canvas.LineTo (1005,83);
Image1.Canvas.MoveTo(1000,111);
Image1.Canvas.LineTo (1005,111);
Image1.Canvas.MoveTo(1000,139);
Image1.Canvas.LineTo (1005,139);
Image1.Canvas.MoveTo(1000,167);
Image1.Canvas.LineTo (1005,167);
Image1.Canvas.MoveTo(1000,194);
Image1.Canvas.LineTo (1005,194);
Image1.Canvas.MoveTo(1000,222);
Image1.Canvas.LineTo (1005,222);
Image1.Canvas.MoveTo(1000,250);
Image1.Canvas.LineTo (1005,250);
//ruscu
Image1.Canvas.MoveTo(1000,250);
Image1.Canvas.LineTo (1000,255);
Image1.Canvas.MoveTo(958,250);
Image1.Canvas.LineTo (958,255);
Image1.Canvas.MoveTo(917,250);
Image1.Canvas.LineTo (917,255);
Image1.Canvas.MoveTo(875,250);
Image1.Canvas.LineTo (875,255);
Image1.Canvas.MoveTo(833,250);
Image1.Canvas.LineTo (833,255);
Image1.Canvas.MoveTo(792,250);
Image1.Canvas.LineTo (792,255);
Image1.Canvas.MoveTo(750,250);
Image1.Canvas.LineTo (750,255);
Image1.Canvas.MoveTo(708,250);
Image1.Canvas.LineTo (708,255);
Image1.Canvas.MoveTo(667,250);
Image1.Canvas.LineTo (667,255);
Image1.Canvas.MoveTo(625,250);
Image1.Canvas.LineTo (625,255);
Image1.Canvas.MoveTo(583,250);
Image1.Canvas.LineTo (583,255);
Image1.Canvas.MoveTo(542,250);
Image1.Canvas.LineTo (542,255);
Image1.Canvas.MoveTo(500,250);
Image1.Canvas.LineTo (500,255);
Image1.Canvas.MoveTo(458,250);
Image1.Canvas.LineTo (458,255);
Image1.Canvas.MoveTo(417,250);
Image1.Canvas.LineTo (417,255);
Image1.Canvas.MoveTo(375,250);
Image1.Canvas.LineTo (375,255);
Image1.Canvas.MoveTo(333,250);
Image1.Canvas.LineTo (333,255);
Image1.Canvas.MoveTo(292,250);
Image1.Canvas.LineTo (292,255);
Image1.Canvas.MoveTo(250,250);
Image1.Canvas.LineTo (250,255);
Image1.Canvas.MoveTo(208,250);
Image1.Canvas.LineTo (208,255);
Image1.Canvas.MoveTo(167,250);
Image1.Canvas.LineTo (167,255);
Image1.Canvas.MoveTo(125,250);
Image1.Canvas.LineTo (125,255);
Image1.Canvas.MoveTo(83,250);
Image1.Canvas.LineTo (83,255);
Image1.Canvas.MoveTo(42,250);
Image1.Canvas.LineTo (42,255);
Image1.Canvas.MoveTo(0,250);
Image1.Canvas.LineTo (0,255);
//And
ZA[1]:=0.07; ZB[1]:=29.02; ZP[1]:=1;
ZA[2]:=1.09; ZB[2]:=35.34; ZP[2]:=1;
ZA[3]:=2.03; ZB[3]:=42.17; ZP[3]:=1;
ZA[4]:=0.38; ZB[4]:=30.48; ZP[4]:=0.5;
ZA[5]:=0.56; ZB[5]:=38.26; ZP[5]:=0.5;
ZA[6]:=1.37; ZB[6]:=48.34; ZP[6]:=0.5;
ZA[7]:=23.01; ZB[7]:=42.16; ZP[7]:=0.5;
ZA[8]:=23.47; ZB[8]:=46.24; ZP[8]:=0.5;
--------------------------------------------
//Lup
ZA[311]:=15.21; ZB[311]:=-36.13; ZP[311]:=0.5;
//ZA[]:=; ZB[]:=; ZP[]:=;
for i:=1 to 311 do
begin
ZAG:=Trunc(ZA[i]);ZAM:=frac(ZA[i])/0.6;
ZA[i]:=ZAG+ZAM;
ZBG:=Trunc(ZB[i]);ZBM:=frac(ZB[i])/0.6;
ZB[i]:=ZBG+ZBM;
if ZB[i]<=0 then
ZB[i]:=abs(ZB[i])+50
else ZB[i]:=50-ZB[i];
y:=250-(((90-ZB[i])/90)*250);
x:=((24-ZA[i])/24)*1000;
x0:=int(x);
y0:=int(y);
if ZP[i]=0.5 then
Image1.Canvas.Pixels[x0,y0]:=clWhite
else begin
Image1.Canvas.Pen.Color:=clWhite;
Image1.Canvas.Brush.Style:=bsSolid;
Image1.Canvas.Brush.Color:=clWhite;
x1:=int(x-ZP[i]);
y1:=int(y-ZP[i]);
x2:=int(x+ZP[i]);
y2:=int(y+ZP[i]);
Image1.Canvas.Ellipse(x1,y1,x2,y2);
end;
end;
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
close;
end;
procedure TForm3.SpeedButton1Click(Sender: TObject);
begin
SpeedButton2.visible:=true;
Label1.Visible:=true;
Label2.Visible:=true;
Label3.Visible:=true;
Label4.Visible:=true;
Label5.Visible:=true;
Label6.Visible:=true;
case ZPL of
1: Label1.Caption:='Меркурій';
2: Label1.Caption:='Венеру';
4: Label1.Caption:='Марс';
5: Label1.Caption:='Юпітер';
6: Label1.Caption:='Сатурн';
7: Label1.Caption:='Уран';
8: Label1.Caption:='Нептун';
9: Label1.Caption:='Плутон';
end;
Label3.Caption:=IntToStr(ZD);
Label5.Caption:=IntToStr(ZR);
case ZM of
1: Label4.Caption:='січня';
2: Label4.Caption:='лютого';
3: Label4.Caption:='березня';
4: Label4.Caption:='квітня';
5: Label4.Caption:='травня';
6: Label4.Caption:='червня';
7: Label4.Caption:='липня';
8: Label4.Caption:='серпня';
9: Label4.Caption:='вересня';
10: Label4.Caption:='жовтня';
11: Label4.Caption:='листопада';
12: Label4.Caption:='грудня';
end;
if ZAB<=0 then
ZAB:=abs(ZAB)+50
else ZAB:=50-ZAB;
y3:=250-(((90-ZAB)/90)*250);
x3:=((24-ZAA)/24)*1000;
x4:=int(x3-2);
y4:=int(y3-2);
x5:=int(x3+2);
y5:=int(y3+2);
case ZPL of
1:Image1.Canvas.Pen.Color:=clRed;
2:Image1.Canvas.Pen.Color:=clAqua;
4:Image1.Canvas.Pen.Color:=clRed;
5:Image1.Canvas.Pen.Color:=clYellow;
6:Image1.Canvas.Pen.Color:=clLime;
7:Image1.Canvas.Pen.Color:=clGreen;
8:Image1.Canvas.Pen.Color:=clBlue;
9:Image1.Canvas.Pen.Color:=clFuchsia;
end;
Image1.Canvas.Ellipse(x4,y4,x5,y5);
end;
procedure TForm3.SpeedButton2Click(Sender: TObject);
begin
Form4:=TForm4.Create(Application);
Form4.ShowModal;
Form4.Free;
SpeedButton2.visible:=false;
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, Common,Math;
type
TForm4 = class(TForm)
Image1: TImage;
Timer1: TTimer;
Button1: TButton;
Label1: TLabel;
-----------------------
Label32: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Mas = array[1..311] of real;
var
Form4: TForm4;
ZA,ZB,ZP : Mas;
ZAG,ZBG : integer;
ZAM,ZBM,x,y,x3,y3 : real;
x4,y4,x5,y5,x0,y0,x1,y1,x2,y2,g :variant;
implementation
{$R *.dfm}
procedure TForm4.FormCreate(Sender: TObject);
var i : integer;
begin
Timer1.Enabled:=true;
Image1.Canvas.Brush.Color:=clBlack;
Image1.Canvas.Brush.Style:=bsSolid;
Image1.Canvas.Rectangle(0,0,2020,505);
Image1.Canvas.pen.color:=clWhite;
Image1.Canvas.Moveto (0,0);
Image1.Canvas.LineTo (2000,0);
Image1.Canvas.LineTo (2000,500);
Image1.Canvas.LineTo (0,500);
Image1.Canvas.LineTo (0,0);
Image1.Canvas.MoveTo(0,278);
Image1.Canvas.LineTo (2000,278);
//ruscu
Image1.Canvas.MoveTo(2000,0);
Image1.Canvas.LineTo (2005,0);
Image1.Canvas.MoveTo(2000,56);
Image1.Canvas.LineTo (2005,56);
Image1.Canvas.MoveTo(2000,111);
Image1.Canvas.LineTo (2005,111);
Image1.Canvas.MoveTo(2000,167);
Image1.Canvas.LineTo (2005,167);
Image1.Canvas.MoveTo(2000,222);
Image1.Canvas.LineTo (2005,222);
Image1.Canvas.MoveTo(2000,278);
Image1.Canvas.LineTo (2005,278);
Image1.Canvas.MoveTo(2000,334);
Image1.Canvas.LineTo (2005,334);
Image1.Canvas.MoveTo(2000,388);
Image1.Canvas.LineTo (2005,388);
Image1.Canvas.MoveTo(2000,444);
Image1.Canvas.LineTo (2005,444);
Image1.Canvas.MoveTo(2000,500);
Image1.Canvas.LineTo (2005,500);
//ruscu
Image1.Canvas.MoveTo(2000,500);
Image1.Canvas.LineTo (2000,505);
Image1.Canvas.MoveTo(1916,500);
Image1.Canvas.LineTo (1916,505);
Image1.Canvas.MoveTo(1834,500);
Image1.Canvas.LineTo (1834,505);
Image1.Canvas.MoveTo(1750,500);
Image1.Canvas.LineTo (1750,505);
Image1.Canvas.MoveTo(1666,500);
Image1.Canvas.LineTo (1666,505);
Image1.Canvas.MoveTo(1584,500);
Image1.Canvas.LineTo (1584,505);
Image1.Canvas.MoveTo(1500,500);
Image1.Canvas.LineTo (1500,505);
Image1.Canvas.MoveTo(1416,500);
Image1.Canvas.LineTo (1416,505);
Image1.Canvas.MoveTo(1334,500);
Image1.Canvas.LineTo (1334,505);
Image1.Canvas.MoveTo(1250,500);
Image1.Canvas.LineTo (1250,505);
Image1.Canvas.MoveTo(1166,500);
Image1.Canvas.LineTo (1166,505);
Image1.Canvas.MoveTo(1084,500);
Image1.Canvas.LineTo (1084,505);
Image1.Canvas.MoveTo(1000,500);
Image1.Canvas.LineTo (1000,505);
Image1.Canvas.MoveTo(916,500);
Image1.Canvas.LineTo (916,505);
Image1.Canvas.MoveTo(834,500);
Image1.Canvas.LineTo (834,505);
Image1.Canvas.MoveTo(750,500);
Image1.Canvas.LineTo (750,505);
Image1.Canvas.MoveTo(666,500);
Image1.Canvas.LineTo (666,505);
Image1.Canvas.MoveTo(584,500);
Image1.Canvas.LineTo (584,505);
Image1.Canvas.MoveTo(500,500);
Image1.Canvas.LineTo (500,505);
Image1.Canvas.MoveTo(416,500);
Image1.Canvas.LineTo (416,505);
Image1.Canvas.MoveTo(334,500);
Image1.Canvas.LineTo (334,505);
Image1.Canvas.MoveTo(250,500);
Image1.Canvas.LineTo (250,505);
Image1.Canvas.MoveTo(166,500);
Image1.Canvas.LineTo (166,505);
Image1.Canvas.MoveTo(84,500);
Image1.Canvas.LineTo (84,505);
Image1.Canvas.MoveTo(0,500);
Image1.Canvas.LineTo (0,505);
//Image1.Canvas.TextOut(10,30,'Boo');
//And
ZA[1]:=0.07; ZB[1]:=29.02; ZP[1]:=1.5;
ZA[2]:=1.09; ZB[2]:=35.34; ZP[2]:=1.5;
ZA[3]:=2.03; ZB[3]:=42.17; ZP[3]:=1.5;
ZA[4]:=0.38; ZB[4]:=30.48; ZP[4]:=0.5;
ZA[5]:=0.56; ZB[5]:=38.26; ZP[5]:=0.5;
ZA[6]:=1.37; ZB[6]:=48.34; ZP[6]:=0.5;
ZA[7]:=23.01; ZB[7]:=42.16; ZP[7]:=0.5;
ZA[8]:=23.47; ZB[8]:=46.24; ZP[8]:=0.5;
---------------------------------------------
//Lup
ZA[311]:=15.21; ZB[311]:=-36.13; ZP[311]:=0.5;
//ZA[]:=; ZB[]:=; ZP[]:=;
for i:=1 to 311 do
begin
ZAG:=Trunc(ZA[i]);ZAM:=frac(ZA[i])/0.6;
ZA[i]:=ZAG+ZAM;
ZBG:=Trunc(ZB[i]);ZBM:=frac(ZB[i])/0.6;
ZB[i]:=ZBG+ZBM;
if ZB[i]<=0 then
ZB[i]:=abs(ZB[i])+50
else ZB[i]:=50-ZB[i];
y:=500-(((90-ZB[i])/90)*500);
x:=((24-ZA[i])/24)*2000;
x0:=int(x);
y0:=int(y);
if ZP[i]=0.5 then
Image1.Canvas.Pixels[x0,y0]:=clWhite
else begin
Image1.Canvas.Pen.Color:=clWhite;
Image1.Canvas.Brush.Style:=bsSolid;
Image1.Canvas.Brush.Color:=clWhite;
x1:=int(x-ZP[i]);
y1:=int(y-ZP[i]);
x2:=int(x+ZP[i]);
y2:=int(y+ZP[i]);
Image1.Canvas.Ellipse(x1,y1,x2,y2);
end;
end;
case ZPL1 of
1: Label1.Caption:='Меркурій';
2: Label1.Caption:='Венеру';
4: Label1.Caption:='Марс';
5: Label1.Caption:='Юпітер';
6: Label1.Caption:='Сатурн';
7: Label1.Caption:='Уран';
8: Label1.Caption:='Нептун';
9: Label1.Caption:='Плутон';
end;
Label3.Caption:=IntToStr(ZD1);
Label5.Caption:=IntToStr(ZR1);
case ZM1 of
1: Label4.Caption:='січня';
2: Label4.Caption:='лютого';
3: Label4.Caption:='березня';
4: Label4.Caption:='квітня';
5: Label4.Caption:='травня';
6: Label4.Caption:='червня';
7: Label4.Caption:='липня';
8: Label4.Caption:='серпня';
9: Label4.Caption:='вересня';
10: Label4.Caption:='жовтня';
11: Label4.Caption:='листопада';
12: Label4.Caption:='грудня';
end;
if ZAB1<=0 then
ZAB1:=abs(ZAB1)+50
else ZAB1:=50-ZAB1;
y3:=500-(((90-ZAB1)/90)*500);
x3:=((24-ZAA1)/24)*2000;
x4:=int(x3-2.5);
y4:=int(y3-2.5);
x5:=int(x3+2.5);
y5:=int(y3+2.5);
case ZPL1 of
1:Image1.Canvas.Pen.Color:=clRed;
2:Image1.Canvas.Pen.Color:=clAqua;
4:Image1.Canvas.Pen.Color:=clRed;
5:Image1.Canvas.Pen.Color:=clYellow;
6:Image1.Canvas.Pen.Color:=clLime;
7:Image1.Canvas.Pen.Color:=clGreen;
8:Image1.Canvas.Pen.Color:=clBlue;
9:Image1.Canvas.Pen.Color:=clFuchsia;
end;
Image1.Canvas.Ellipse(x4,y4,x5,y5);
g:=0;
end;
procedure TForm4.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=false;
close;
end;
procedure TForm4.Timer1Timer(Sender: TObject);
begin
begin
g:=g+1;
if g div 2=5 then
begin
Image1.Canvas.Pen.Color:=clBlack;
Image1.Canvas.Brush.Style:=bsSolid;
Image1.Canvas.Brush.Color:=clBlack;
Image1.Canvas.Ellipse(x4,y4,x5,y5);
g:=0;
end
else
begin
Image1.Canvas.Brush.Style:=bsSolid;
Image1.Canvas.Brush.Color:=clWhite;
case ZPL1 of
1:Image1.Canvas.Pen.Color:=clRed;
2:Image1.Canvas.Pen.Color:=clAqua;
4:Image1.Canvas.Pen.Color:=clRed;
5:Image1.Canvas.Pen.Color:=clYellow;
6:Image1.Canvas.Pen.Color:=clLime;
7:Image1.Canvas.Pen.Color:=clGreen;
8:Image1.Canvas.Pen.Color:=clBlue;
9:Image1.Canvas.Pen.Color:=clFuchsia;
end;
Image1.Canvas.Ellipse(x4,y4,x5,y5);
end;
end;
end;
end.
4. Тестування програми і результати її виконання.
Здійснимо тестування програми на предмет похибки результатів від істинних
значень. Для цього візьмемо з “ Астрономического календаря за 1990 г.” ефе-
мериди Марса на 31 жовтня 1990р. Результати, які видала програма на цю да-
ту приведенні в таблиці ( l = 0h, j = 560 ):
31.10.1990р. | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
істинне значення | 50.3 | 1.474 | 04h49.7m | +22031’ | 17.0’’ | 0.96 | 17h32m | 02h13m | 10h49m | + -1350 |
програмне значення | 50.3 | 1.474 | 04h55.8m | +22032’ | 16.9’’ | 0.96 | 17h41m | 02h18m | 10h56m | + -134.50 |
відносна похибка | 0.14% | 0.14% | 0.5% | 0.05% | 0.6% | 0% | 0.5% | 0.3% | 0.5% | 0.2% |
5.Висновки.
Отже повернімося до першого питання простої людини:” Куди направити свій погляд, щоб побачити якусь планету?” Найпростіша відповідь: ”В час кульмінації планети стати обличчям на південь ( напрям небесного меридіану ) і знаючи координату схилення d (AB) обчислити кут e між горизонтом і планетою за виразом:
e = j + ( d )
де: j - (FI) географічна широта місця спостереження, яку приблизно можна виз-
начити за атласом світу.
Програма явно “сира” – що називається “demo-версія”. Середовище Delphi дозволило спростити зовнішній інтерфейс програми, ввід-вивід інформації. Введення графічних компонент дозволило наочно зобразити розміщення планет на фоні зоряного неба.
Використання принципово іншого обчислювального “ ядра “ дозволить не тільки досягти більш точних результатів, але й визначити ефемериди для інших тіл Сонячної системи: астероїдів і комет.
6.Список літератури.
1.Астрономический календарь на 1990 г. / Под. Ред. Д.Н.Пономарева. – М.:
Наука. Гл. ред. физ-мат. лит. 1989. – 336с.
2.Бронштейн В.А. Как движется Луна? – М.: Наука. Гл. ред. физ-мат. лит.,
1990 – 208с.
3.Климишин И.А. Жемчужины звездного неба . – К.: Рад. шк., 1988. – 206с.
4.Климишин І.А., Тельнюк-Адамчук В.В. Шкільний астрономічний довідник
Кн. Для вчителя. – К.: Рад. шк., 1990. – 287с.
5.Романовський Т.Б. Микрокалькуляторы в рассказах и играх – К.: Рад. шк.,
1989. – 223с.
6.Хоровитц Н. Поиски жизни в Солнечной системе: Пер. с англ./ Под ред. и
с предисл. М.С. Крихкого. – М.: Мир, 1988. – 187с.
P.S. Не судіть надто мою необізненість в справах астрономії, тому що формули з цієї програми виводились мною будучи 15- літнім хлопцем, коли в школі розпочинають вчити тригонометрію. Хто зацікавився даною програмою може звернутися на vetoo@mail.ru , я з задоволенням вишлю її вам на шару.
0 комментариев