МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Тригонометричні ефемериди планет Сонячної системи

    Edit1 ми вводимо пароль і нажимаємо кнопку “Старт”(Button1) для запуску

    програми. У програмі процедура TForm1.Button1Click порівнює правильність

    паролю. Якщо пароль вірний сворюється Form2, в протилежному випадку

    видається повідомлення про невірний пароль. Кнопка “Фініш”( Button2)

    закриває програму.

    У Form2 відбувається процес обчислення. Першим кроком необхідно вибрати

    планету. Для цього у GroupBox1 зібрано 9 RadioButton. Процедури

    TForm2.RadioButton1..9Click відповідають за вибір міток планет, які будуть

    в подальшому використовуватись програмою в інших формах. Другим кроком ми

    вибираємо дату моменту спостереження у формі день.місяць.рік. з трьох

    ComboBox, що зібрані в GroupBox2. Третім кроком вводимо координати місця

    спостереження – широту в поле Edit1, довготу в поле Edit2, що зібрані у

    GroupBox3. При натискані кнопки “Help” запускається процедура

    TForm2.Button4Click, яка створює інформаційне вікно про географічні

    координати деяких міст України і світу. Слід врахувати що програма працює в

    межах від 8 січня 1990 року до 31 грудня 2099 року. Задання дат поза межами

    робочої зони, не введення мітки планети , неправильне введення номера дня

    місяця, місяця , географічної широти місця спостереження вважається за

    помилку і виводить програму на автоматичний вибір початкових даних.

    При натисканні кнопки “Обчислити”(Button1) запускається весь процес

    обчислення. Запускається процедура Eagth1 з модуля Eagth. Необхідність

    введення модуля Eagth, де ми знаходимо координати Землі відносно Сонця,

    зумовлена тим, що ми ведемо спостереження із Землі, внаслідок чого ми

    спостерігаємо нерівномірний рух планети по небу, то він рухається, то

    раптом стає і починає рухатись назад. Після цього запускається модуль

    Mars(для прикладу), де виконуються три процедури.

    В першій процедурі визначають геліоцентричну довготу і радіус вектор

    Марса у циклі з кроком N4 днів з моменту 9.01.1990р. до заданого моменту

    спостереження. Обчислення проводяться на основі 2 закону Кеплера про

    рівність площ секторів еліпса орбіти за одинаків проміжок часу.

    У другій процедурі визначають видимі координати Марса в заданий

    момент

    на зоряному небі в екваторіальній системі координат. Для цього

    використовую-

    чи дані з модуля Eagth і процедури Mars1 розв’язують задачу стереометрії:

    виз-

    начають кутове зміщення Марса по прямому піднесенню від істинного і відхи-

    лення схилення від площини екліптики. В процесі обчислення ми можемо виз-

    начити лінійну відстань від Землі до Марса і знаючи лінійний радіус Марса

    мо-

    жемо визначити видимий кутовий діаметр і фазу диска планети.

    Третя процедура модуля Mars має більш зрозуміле значення для

    простого користувача програми оскільки визначає час сходу, заходу і

    кульмінації Марса.

    Кульмінація – це момент проходження небесного меридіана, коли планета зна-

    ходиться в найвищій точці над горизонтом і має найкращі умови для спостере-

    ження. Також визначається азимут точок сходу і заходу планети на

    горизонті.

    Результати обчислення виводяться на форму як множина Label, що зібрані

    у GroupBox4. Кнопка Button3 запускає процедуру створення Form3.

    У Form 3 на фоні зоряного неба відображається вибрана планета. У процедурі

    procedure TForm3.FormCreate(Sender: TObject); створюється фон зоряного

    неба через елемент Image1. Вводиться Canvas.Rectangle відовідного розміру

    заповняється Canvas.Brush чорним кольором і через масив координат і

    зоряних величин заповняється зорями через побудову

    Image1.Canvas.Ellipse(x1,y1,x2,y2);

    Через кнопку “Показати” procedure SpeedButton1Click(Sender: TObject);

    відбувається перетворення зоряних координат планети на пікселі відповідно

    масштабу Image1 і зображається сама планета відповідним кольором через

    Image1.Canvas.Pen.Color і Image1.Canvas.Ellipse(x4,y4,x5,y5);

    Через кнопку “Закрити” procedure TForm3.Button1Click(Sender: TObject);

    відбувається закриття форми.

    Через кнопку “Детальніше” procedure TForm3.SpeedButton2Click(Sender:

    TObject); створюється Form4.

    У Form4 зображається більш детальніше фон зоряного неба. Завдяки

    збільшенню розмірів Image1, ми змушені використати полосу прокрутки.

    Створення форми відбувається аналогічно Form3. Відмінність полягає у тому,

    що зображення планети миготить. Це дозволяє наочно відрізнити планету від

    зірок. Досягається це в procedure TForm4.Timer1Timer(Sender: TObject);, де

    ми вводимо рахівник і через порівняння чи він парний чи непарний

    зображення планети проявляється то замальовується чорним кольором під

    колір фону.

    3. Програма на мові програмування Delphi.

    [pic]

    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.

    [pic]

    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 (D031) 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 (R02100) 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=360 do

    begin

    EG:=EG-360

    end;

    ER1:=(Eao*(1-sqr(Eeo)))/(1+Eeo*cos((EG-Eap)*PI/180)); //формула

    2

    ER:=ER1;

    Until DR=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=24 then

    begin

    AA:=AA-24;

    end;

    If AA=24 then

    begin

    ATZ:=ATZ-24;

    end;

    ATZL:=ATZ-LB/15+n; //місцевий час заходу

    if ATZL0 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.

    [pic]

    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.

    [pic]

    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р. Результати, які видала програма на цю да-

    ту приведенні в таблиці ( ( = 0h, ( = 560 ):

    [pic]

    |31.10.1|1 |2 |3 |4 |5 |6 |7 |8 |9 |10 |

    |990р. | | | | | | | | | | |

    |істинне| | | | | | | | | | |

    | |50.3|1.474 |04h49.|+22031|17.0’’|0.96 |17h32m|02h13m|10h4|( |

    |значенн| | |7m |’ | | | | |9m |(1350 |

    |я | | | | | | | | | | |

    |програм| | | | | | | | | | |

    |не |50.3|1.474 |04h55.|+22032|16.9’’|0.96 |17h41m|02h18m|10h5|( |

    |значенн| | |8m |’ | | | | |6m |(134.5|

    |я | | | | | | | | | |0 |

    |відносн| | | | | | | | | | |

    |а |0.14|0.14% |0.5% |0.05% |0.6% |0% |0.5% |0.3% |0.5%|0.2% |

    |похибка|( | | | | | | | | | |

    5.Висновки.

    Отже повернімося до першого питання простої людини:” Куди направити

    свій погляд, щоб побачити якусь планету?” Найпростіша відповідь: ”В час

    кульмінації планети стати обличчям на південь ( напрям небесного меридіану

    ) і знаючи координату схилення ( (AB) обчислити кут ( між горизонтом і

    планетою за виразом:

    ( = ( + ( ( )

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

    вам на шару.

    -----------------------

    [pic]

    Страницы: 1, 2


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.