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 , я з задоволенням вишлю її вам на шару.


Информация о работе «Тригонометричні ефемериди планет Сонячної системи»
Раздел: Информатика, программирование
Количество знаков с пробелами: 52566
Количество таблиц: 1
Количество изображений: 0

0 комментариев


Наверх