МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ p>
ТЕРНОПІЛЬСЬКИЙ ДЕРЖАВНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ p>
імені Івана Пулюя p>
КУРСОВА РОБОТА p>
з об'єктно -- орієнтованого програмування на тему: p>
"Трігонометрічні ефемериди планет p>
Сонячної системи" p>
Зміст p>
стор. p>
Вступ. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _5 P>
1.Теоретічна частіна._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ 6
2.Розробка алгоритму і структури програмі._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
16
3.Програма на мові програмування Delphi._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
19
4.Тестування програми і результати її виконання. _ _ _ _ _ _ _ _ _ _ _ _ _
_ 45
5.Вісновкі. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ 46
6.Список літератури. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ 47 p>
Вступ p>
З давніх часів люди захоплено дивилися в нічне зоряне небо. Ще нічого незнаючи про будову Всесвіту, вони з ночі в ніч вели спостереження зазорями і Місяцем. Особливо їх зацікавив небесний рух 5 яскравих зірок, якіна відміну від інших міняли своє положення і отримали за це назву - планети
(aster planetes - (лат.) блукаючи зоря). p>
Спостерігачі древніх цивілізацій намагалися розгадати закони руху цих p>
зірок по небу. Древній грек Птоломей описав їх рух, виходячи із своєї гео- p>
центрічної системи світу. Корінний перелом у вивченні небесної механіки p>
наступив в середньовіччі, коли Копернік поставив у центр світу Сонце, Кеп- p>
лер на основі спостережень сформулював закони руху планет по своїх ОРБІ- p>
тах, а Ньютон вивів закон всесвітнього тяжіння. З тих пір астрономи почали p>
детально порівнювати результати спостережень із результатами обчислень. P>
Розвиток оптичних приладів і математичного апарату обчислень дав поштовх p>
до того, що результати набули високої точності. Ті незначні невідповідності p>
в обчисленнях заставили астрономів задуматись над їх причинами, що дало p>
змогу відкрити нерівномірності в русі планет, так наприклад зміщення пери- p>
гелію Меркурія було пояснено лише з приходом теорії відносності. p>
Людина завжди прагнула побачити своє майбутнє, астрономам вдалосязазирнути у майбутнє планет. Знаючи їх початкове положення і те, як вониру- p>
хают, вчені можуть прогнозувати їх місцезнаходження на століття вперед.
Однак вирішення цієї задачі складне, оскільки потрібно враховувати дуже ба- p>
гато чинників: вплив Сонця, вплив планет одна на одну, зміна елементів їхорбіт з плином часу. До появи ЕОМ ці завдання вирішувались на папері мак- p>
сімум з логаріфмічною лінійкою, що займало місяці тяжкої праці. Навітьнезначна помилка, особливо на початку роботи, зводила всю її нанівець.
Тепер p>
же, астрономи, за допомогою потужних ЕОМ можуть за лічені секунди обраху- p>
вати траєкторії руху планет, комет, астероїдів. P>
1. Теоретична частина p>
Планети Сонячної системи - це небесні тіла, які рухаються в полі тяжіння
Сонця по еліптичних орбітах і світяться відбітім сонячним промінням.
Основна відмінність планет від зірок у тому, що температури всерединіпланет недостатні для перебігу там термоядерних реакцій, що в свою чергузумовлене їх малою масою.Крім великих планет до складу Сонячної системивходять малі планети - астероїди. Великі планети за їх фізичнимихарактеристиками поділяють на дві групи: планети земної групи - Меркурій,
Венера, Земля, Марс, та планети-гіганти - Юпітер, Сатурн, Уран, Нептун.
Плутон швидше належить до малих планет. Ос- p>
новних відмінність між цими групами в тому, що до складу планет першої групи p>
входять в основному важкі хімічні елементи тоді як планети-гігантискладаються p>
переважно з водню і гелію. p>
Отже уявімо, що проста людина, озброївшись підзорною трубою чи навітьбіноклем, захоче подивитися на ці планети. Перше питання, яке в неї виникне
- Це куди, в яку точку неба направити свій погляд, адже без спеціальнихзнань зоряних атласів виокремити планети на фоні тисячі зірокнеможливо. Для любителів астрономії і професіоналів астрономів важливобуде знати точні координати планети, відстань до неї, кутовий діаметр, фазудиска, видиму зоряну величину - тобто знати астрономічні ефемериди планети
. p>
В даній курсовій роботі складена програма на мові Delphi, якавикористовуючи закони трігонометрії приблизно обчислює ефемериди планет ідозволяє наочно зобразити планети на фоні зоряного неба. Слово "приблизно"означає, що існує деяка похибка, пов'язана з слабким математичним апаратомобчислення, і ця похибка для професіоналів була б просто катастрофічною.
Адже сучасні теорії руху планет з використанням диференціального іінтегрального обчислення, а також сучасні обчислювальні машини дозволяютьнівелювати похибку обчислення до похибки роздільної здатності сучаснихтелескопів. Але хочу звернути увагу, що кінцевими користувачами програмиможуть бути прості люди і любителі астрономії, для яких ця похибка не дужеважлива. p>
Отже, що таке ефемериди? Ефемериди - це астрономічні дані про положенняна небі та умови спостереження світил для окремих або послідовних моментівчасу. Ефемериди публікують у спеціальних виданнях. Астрономічні ефемеридимістять головним чином дані про координати, відстані, фази планет. p>
Архімед сказав: "Дайте мені точку опори і я переверну Землю". Дляастрономії точкою опори, здатною перевернути усю Сонячну систему, є час, аточніше початкова точка відліку часу. p>
У програмі точкою відліку часу є 9 січня 1990р. Чим особлива ця дата?
А ні чим, просто у автора програми під рукою був лише "астрономічнийкалендар на p>
1990р. "І він з нього дізнався про точні координати планет Сонячноїсистеми саме на цю дату. Другою проблемою, яку слід вирішити - є системавідліку часу. p>
Те, що творилося з нашим календарем в історії для астрономів інакше якжахом p>
не назвеш. То спочатку був Юліанський календар потім Григоріанський, підчас p>
переходу було втрачено 13 днів, як наслідок ми св'яткуємо старий Новий рік.
Ви- p>
сокосні роки, 29 лютого, декретні час - все це призводить до плутанини. P>
В астрономії прийнято нумерувати дні. Нумеровані дні в астрономії маютьназву юліанські дні. Якщо дні нумеровані, то спрощують всі календарнірозрахунки. Наприклад, число днів між двома датами рівне різницівідповідних номерів дат. Це визначення і покладено в основу системи відлікучасу в нашій програмі. Єдина проблема - це розробити метод нумерації днів врамках нашого григоріанського календаря. p>
Нумерація днів в сучасному календарі утруднена через йогонеперіодічність: одні місяці мають 30 днів, інші 31, в лютому то 28, то 29у високосному році. Як- p>
би в кожному місяці було 30 днів, а високосних років не було, то номердати p>
можна було б визначити по формулі: p>
N = 365 * G + 30 * (M-1) + D p>
де - G, M, D - рік, місяць, день дати. p>
Найбільші складності в удосконалені цієї формули створює лютий. Длявисокосний років, починаючи з 1 березня, потрібно враховувати додатковийдень. Якби лютий був останнім місяцем року, то по крайній мірі, цяскладність зникла б. Тому в календарних розрахунках місяць і рік доцільноперенумеруваті: березень буде першим місяцем року і т.д., а січень і лютийодинадцятим і дванадцятим місяцями попереднього року. p>
Алгоритм присвоєння номера дня в рамках григоріанського календаря буде p>
таким: p>
S: = int (12 - M/10) ; p>
M: = 12 * S + M - 2; p>
G: = G - S; p>
N: = 365 * G + int (G/4) - int (G/100) + int (G/400) + int (30.59 * M) +
D - 30; p>
спростімо: об'єднаємо перші два члена до int (365.25 * G). P>
Для дат з 1900 по 2099 роки вираз N спрощується за рахунок того, що суматре- p>
тього і четвертого членів за цей час не міняється і дорівнює -15. Так як вНумеа- p>
рації дат числа -15 і -30 тільки посувають номера всіх дат на одне і тежчисло, p>
то в розрахунках їх можна не враховувати. Щоб номера дат для ((і (((ст.не p>
були занадто великими з номера року віднімемо 1900, тоді: p>
N: = int (365.25 * (G - 1900) + int (30.59 * M) + D; (1 ) p>
Оскільки за цією формулою 9 січня 1990 р. Має значення N: = 32852, то мивводи- p>
мо його як константу точки відліку часу. p>
Тепер розберемося з простором. Просторове положення планети відносно
Сонця задається елементами орбіти. Елементи орбіти - величини, якіхарактеризують розміщення орбіти небесного тіла в просторі, її розміри,форму, а також положення тіла на орбіті. За початок відліку координатберуть точку весняного рівнодення - точку небесного екватора, через якуцентр диска Сонця 20 (21) березня переходить з Південної півкулі неба в
Північну. P>
Якщо дивитися з полюса орбіти, з якого рух тіла відбувається проти рухустрілки годинника, то точку перетину площини орбіти з площиною екліптики (площина орбіти Землі), в якій орбіта піднімається над площиною екліптики --називають вісхіднім вузлом. Дугу від точки весняного рівнодення по великомуколі екліптики до вузла - називають довготи висхідного вузла ((, Aie). p>
Дугу від точки весняного рівнодення до точки перігелію планети (найменша p>
відстань до Сонця) - називають довгота перігелію Aap. p>
Розміри і форму орбіти визначають за рівнянням орбіти в полярнихкоординатах p>
де: p>
r - відстань від точки на орбіті, де знаходиться планета до Сонця в а.о. )
AR, p>
e - ексцентриситет орбіти (геометрична властивість еліпса орбіти) Aeo, p>
a - велика піввісь орбіти (середня відстань від планети до Сонця в а.о.)
Aao, p>
v - кут справжньої аномалії (кут у площині орбіти від перігелію до точкина p>
орбіті, де перебуває планета), p>
оскільки v = (- Aap де: p>
(- геліоцентрічна довгота планети (кут між точкою весняного рівнодення іточкою на орбіті де перебуває планета) AG, p>
отже: p>
або (2) p>
Це головна формула, яка визначає рух планети по еліптічній орбіті.
Невідомі- p>
ми величинами тут є AG і AR: геліоцентрічна довгота і радіус-вектор - основ- p>
ні ефемериди планети з яких в подальшому будуть визначатися інші. P>
Отже перед початком роботи програми нам відомі елементи орбіти, що єконс- p>
танта, номер дати спостереження, початкові координати планети:геліоцентрі- p>
чна довгота і радіус-вектор в початковий момент часу 9 січня 1990р.
Використає- p>
мо 2 закон Кеплера для опису руху планети. Він говорить, що площа секторів p>
еліпса орбіти за одинаків проміжок часу однакова. Оскільки швидкість рухупланети по орбіті незмінна, то дуги цих секторів будуть також однакові. p>
S1 = S2; R1 = R2 p>
Знаючи елементи орбіти можемо визначити площу всього еліпса орбіти іподіливши на період обертання визначити площу еліпса за один день (n = 1),або p>
за одну годину чи одну хвилину (відповідно n = 1/24, n = 1/1440). p>
(в а.о.2) p>
(3) p>
Знаючи орбітальну швидкість (км/с) можемо визначити лінійну довжину дуги p>
еліпса орбіти за один день (відповідно за 1 рік., за 1 хв.) p>
R: = vорб * 86400/AO (* n) (в а.о.
) (4) p>
де: p>
86400 - кількість секунд у дні (60 * 60 * 24) p>
AO - астрономічна одиниця (середня відстань від Землі до Сонця) p>
Нам необхідно знайти (- кут переміщення планети за n-днів. p>
p>
p>
p>
(5) p>
p>
p>
(6) p>
Знайдемо довготи на 10 січня 1990р. : (= (Поч + (. За формулою (2)визначимо p>
точніше r2 радіус-вектор на 10 січня 1990р. p>
На початку циклу обчислень ми посуваємо початковий момент на 1 день (або p>
n-днів). В кінці циклу ми прірівнюємо r1: = r2 і перевіряємо чи початковий мо- p>
мент часу став рівним моменту спостереження. P>
Другим кроком програми буде знаходження видимих екваторіальніх координатпланети: пряме піднесення (і схилених (. Пряме піднесення (- вимірюєтьсявід точки весняного рівнодення вздовж небесного екватора назустріч мабутьдобовому обертанню небесної сфери до кола схилених світила і вимірюється вгодинній мірі від 0 до 24h (AA). Схилених (- вимірюється в градусах віднебесного екватора вздовж кола схилених до світила (від-900 до +900) (AB).
Здавалось пряме піднесення (легко визначити розділивши довгота AG на 15 (
150 = 1 рік. ). Однак це було б правильно, якби Земля і планета рухалися наодній прямій від Сонця. Насправді нам необхідно розрахувати зміщення ((скорегувала таким чином значення AG/15. p>
p>
p>
p>
p>
(7) p>
тоді AA: = (+ ((/ 15 p>
схилених планет однозначно визначити не можна. Оскільки площина орбіти p>
планети нахилена до площини екліптики під кутом і (Aei), то знаючипіднесення p>
АА визначимо, яке б було схилених планети якби вона рухалася поекліптиці, а потім скорегуємо його відповідно до нахилу і на ((. p>
схилених (точки екліптики, знаючи його піднесення (, можна визначити заформулою: p>
p>
де (- кут нахилу екліптики до небесного екватора (23,50). p>
Зміщення ((можна знайти розв'язавши задачу стереометрії. Виведеннякінце- p>
вої формули досить велике, тому дамо остаточний результат: p>
(8) p>
де: (= (- ( p>
(= (- ( p>
(= arcsin (sin (* sin () p>
тоді: AB = (+ (( p>
Знаючи Z і R з формули (8) можемо визначити лінійну відстань між
Землею p>
і планетою p>
(9) p>
Знаючи AV і екваторіальній радіус планети можемо визначити видимий кутовий p>
діаметр планети. P >
(10) p>
Фазу планети визначають так: p>
p>
p>
p>
p >
p>
Фаза планети - це її форма, що її бачить спостерігач із Землі. Воназумовлена p>
змінами в умовах освітленості планети Сонцем під час руху навколо нього. Уас- p>
трономії фазу описують числом - це відношення найбільшої ширини освітленої p>
частини диска планети до його діаметра. p>
Важливими ефемериди планети є умови її видимості, тобто час сходу ізаходу азимут точок сходу і заходу на горизонті. p>
Сходом і заходом світила - називають момент перетину світиломматематичного горизонту, коли воно переходить з невидимої півкулі в видимуі навпаки. Годинний кут t сходу і заходу світила з координатами (і (нагеографічній широті (визначають з виразу: p>
(12) де: p>
(- рефракція на горизонті (0,590), p>
R - кутовий радіус світила (AYD/2), p>
p - горизонтальний паралакс (RЗ/(AV * AO)) p>
Азимут А світила при сході і заході можна знайти з виразу: p>
( 13) p>
Отже, нам потрібно знайти годинний кут. Годинний кут --це час, що минув з мо- p>
менту верхньої кульмінації. Годинний кут t визначають за місцевим зорянимча- p>
сом спостерігача s і прямим піднесенням (: t = s-(. Звідси час верхньоїкульмінації p>
можна знайти за умовою s = (. оскільки: s = s0 + T0 + 0.0027 * T0; p>
то: (= s0 + T0 * (1.0027); p >
T0 * (1.0027) = (- s0; p>
T0 = (- s0/1.0027 p>
(14) p>
де: p >
s0 - місцевий зоряний час в 0h по всесвітньому часу, p>
T0 - час кульмінації. p>
Знаючи час кульмінації, додавши і віднявші від нього годинний кут сходуі p>
заходу отримуємо відповідно час сходу і заходу, а далі за формулою (13)азимут p>
точок сходу і заходу. p>
Програма містить алгоритми, які враховують особливості додавання івіднімання годинних величин, адже: p>
23h + 2h (25h p>
23h + 2h = 1h (25h - 24h) p>
2h - 3h (-1h p>
2h - 3h = 23h (-1h + 24h) p>
Оскільки початкові координати планет взяті в 0h за всесвітнім часом токінцеві p>
результати також будуть відповідати йому. Щоб привести результати часових p>
вимірів до місцевого часу спостерігача треба врахувати географічну довгота
( p>
місця спостереження: p>
Тм = Т0 - (/ 15 + n p>
Літній час зумовлює додавання ще однієї години (n = 1 літо, n = 0 зима). p>
2. Розробка алгоритму та структури програми. p>
Ніжчеопісана програма на мові Delphi є лише інструментом приблизного p>
обчислення руху планет Сонячної системи. Програма розбита на кількаструктурніx частин: Form1 'ефемериди планет Сонячної системи', Form2
'Обчислення ефемериди планет Сонячної системи', Form3 'Огляд зоряного неба',
Form4 'Детальний огляд зоряного неба'. P>
У Form1 відображена загальна інформація про курсову роботу. У полі
Edit1 ми вводимо пароль і нажімаємо кнопку "Старт" (Button1) для запускупрограми. У програмі процедура TForm1.Button1Click порівнює правильністьпаролю. Якщо пароль вірний сворюється Form2, в протилежному випадкувидається повідомлення про невірний пароль. Кнопка "Фініш" (Button2)закриває програму. p>
У Form2 відбувається процес обчислення. Першим кроком необхідно вибратипланету. Для цього у GroupBox1 зібрано 9 RadioButton. Процедури
TForm2.RadioButton1 .. 9Click відповідають за вибір міток планет, які будутьв подальшому використовуватись програмою в інших формах. Другим кроком мивибираємо дату моменту спостереження у формі день.місяць.рік. з трьох
ComboBox, що зібрані в GroupBox2. Третім кроком вводимо координати місцяспостереження - широту в поле Edit1, довгота в полі Edit2, що зібрані у
GroupBox3. При натіскані кнопки "Help" запускається процедура
TForm2.Button4Click, яка створює інформаційне вікно про географічнікоординати деяких міст України і світу. Слід врахувати що програма працює вмежах від 8 січня 1990 року до 31 грудня 2099 року. Завдання дат поза межамиробочої зони, не введення мітки планети, неправильне введення номера днямісяця, місяця, географічної широти місця спостереження вважається запомилку і виводить програму на автоматичний вибір початкових даних. p>
При натисканні кнопки "Обчислити" (Button1) запускається весь процесобчислення. Запускається процедура Eagth1 з модуля Eagth. Необхідністьвведення модуля Eagth, де ми знаходимо координати Землі відносно Сонця,зумовлена тим, що ми ведемо спостереження із Землі, внаслідок чого миспостерігаємо нерівномірний рух планети по небу, то він рухається, тораптом стає і починає рухатись назад. Після цього запускається модуль
Mars (для прикладу), де виконуються три процедури. P>
В першій процедурі визначають геліоцентрічну довгота і радіус вектор
Марса у циклі з кроком N4 днів з моменту 9.01.1990р. до заданого моментуспостереження. Обчислення проводяться на основі 2 закону Кеплера прорівність площ секторів еліпса орбіти за одинаків проміжок часу. p>
У другій процедурі визначають видимі координати Марса в завданьмомент p>
на зоряному небі в екваторіальній системі координат. Для цьоговикористовую- p>
чи дані з модуля Eagth і процедури Mars1 розв'язують задачу стереометрії:віз- p>
начають Кутове зміщення Марса по прямому піднесенню від істинного і відхі- p>
лення схилених від площини екліптики. В процесі обчислення ми можемо віз- p>
начіті лінійну відстань від Землі до Марса і знаючи лінійний радіус Марсамо- p>
жемо визначити видимий кутовий діаметр і фазу диска планети. p>
Третя процедура модуля Mars має більш зрозуміле значення дляпростого користувача програми оскільки визначає час сходу, заходу ікульмінації Марса. p>
кульмінація - це момент проходження небесного меридіана, коли планета зна- p>
ходиться в найвищій точці над горизонтом і має найкращі умови для спостере- p>
ження . Також визначається азимут точок сходу і заходу планети нагоризонті. p>
Результати обчислення виводяться на форму як множина Label, що зібраніу GroupBox4. Кнопка Button3 запускає процедуру створення Form3. P>
У Form 3 на фоні зоряного неба відображається вибрана планета. У процедурі p>
procedure TForm3.FormCreate (Sender: TObject); створюється фон зоряногонеба через елемент Image1. Вводиться Canvas.Rectangle відовідного розмірузаповняється Canvas.Brush чорним кольором і через масив координат ізоряних величин заповняється зорями через побудову
Image1.Canvas.Ellipse (x1, y1, x2, y2); p>
Через кнопку "Показати" procedure SpeedButton1Click (Sender: TObject);відбувається перетворення зоряних координат планети на пікселі відповідномасштабу Image1 і зображається сама планета відповідним кольором через p>
Image1.Canvas.Pen.Color і Image1.Canvas.Ellipse (x4, y4, x5, y5); p>
Через кнопку "Закрити "procedure TForm3.Button1Click (Sender: TObject);відбувається закриття форми. p>
Через кнопку "Детальніше" procedure TForm3.SpeedButton2Click (Sender:
TObject); створюється Form4. P>
У Form4 зображається більш детальніше фон зоряного неба. Завдякизбільшенню розмірів Image1, ми змушені використати полосу прокрутки.
Створення форми відбувається аналогічно Form3. Відмінність полягає у тому,що зображення планети міготіть. Це дозволяє наочно відрізнити планету відзірок. Досягається це в procedure TForm4.Timer1Timer (Sender: TObject);, деми вводимо Рахівник і через порівняння чи він парний чи непарнийзображення планети проявляється то замальовується чорним кольором підколір фону. p>
3. Програма на мові програмування Delphi. P>
p>
unit Unit1; p>
interface p>
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, ExtCtrls, StdCtrls, Unit2, jpeg; p>
type
TForm1 = class (TForm) p>
Panel1: TPanel; p>
Image1: TImage; p>
StaticText1: TStaticText; p>
StaticText2: TStaticText; p>
StaticText3: TStaticText; p>
StaticText4: TStaticText; p>
StaticText5: TStaticText; p>
GroupBox1: TGroupBox; p>
Button1: TButton; p>
Button2: TButton; p>
Edit1 : TEdit; p>
StaticText6: TStaticText; p>
Image2: TImage; procedure Button1Click (Sender: TObject); procedure Button2Click (Sender: TObject); procedure FormCreate (Sender: TObject);
private p>
(Private declarations) public p>
(Public declarations) end; p>
var
Form1: TForm1;
Form2: TForm2; p>
implementation p>
($ R *. dfm) p>
procedure TForm1.Button1Click (Sender: TObject);var PAR: string;begin
PAR: = Edit1.Text;
If PAR = 'orion 17' Then begin p>
Form2: = TForm2.Create (Application); p>
Form2.ShowModal ; p>
Form2.Free; p>
Edit1.Clear; end else begin if MessageDlg ( 'Пароль невірний! Значення "
'+ Edit1.Text +' "не є паролем! Зверніться до розробника ', mtError, [mbOK], 0) = mrOK then p>
Edit1.Clear; end;end;procedure TForm1.Button2Click (Sender: TObject);beginclose;end;procedure TForm1.FormCreate (Sender: TObject);begin
Image1.Picture.LoadFromFile ( 'star.jpg');
Image2.Picture.LoadFromFile ( 'star2.jpg');end; p>
end.
unit Unit2; p>
interface p>
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; p>
type
TForm2 = class (TForm) p>
Panel1: TPanel; p>
GroupBox1: TGroupBox; p>
GroupBox2: TGroupBox; p>
GroupBox3: TGroupBox; p>
GroupBox4 : TGroupBox; p>
Button1: TButton; p>
Button2: TButton; p>
Button3: TButton; p>
Button4: TButton; p >
Image1: TImage; p>
Image2: TImage; p>
RadioButton1: TRadioButton; p>
------------- -------------- p>
RadioButton9: TRadioButton; p>
StaticText1: TStaticText; p>
------- --------------------- p>
StaticText5: TStaticText; p>
ComboBox1: TComboBox; p>
ComboBox2: TComboBox; p>
ComboBox3: TComboBox; p>
Edit1: TEdit; p>
Edit2: TEdit; p>
Label1: TLabel; p>
--------------------------- p>
Label46: TLabel; procedure RadioButton1Click (Sender: TObject) ; p>
------------------------------------------ ---- procedure RadioButton9Click (Sender: TObject); procedure FormCreate (Sender: TObject); procedure Button1Click (Sender: TObject); private p>
(Private declarations) public p>
(Public declarations) end; p>
var p>
Form2: TForm2;
Form3: TForm3; p>
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 p>
($ R *. dfm) p>
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; p>
procedure TForm2.Button3Click (Sender: TObject);beginclose;end; p>
procedure TForm2.RadioButton1Click (Sender: TObject);begin
PLN: = 1; ZPL: = 1; ZPL1: = 1;
Image1.Picture.LoadFromFile ( 'mercury.jpg');end; p>
----------------------------------------- ------------- p>
procedure TForm2.RadioButton9Click (Sender: TObject);begin
PLN: = 9; ZPL: = 9; ZPL1: = 9;
Image1.Picture.LoadFromFile ( 'pluton.jpg');end; p>
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;
----------------------< br>Label46.Visible: = false;
Button2.Enabled: = false; end; p>
procedure TForm2.Button1Click (Sender: TObject);begin
Button2.Enabled: = false;
Label4.Visible: = false;
------------------------< br>Label46.Visible: = false; if PLN = 0 then// захист від помилки begin if MessageDlg ( 'Ви забули вибрати планету!' + # 13 + 'По замовчуваннюбуде вибрана Земля. ' p>
, mtError, [mbOK], 0) = mrOK then begin p>
RadioButton3.Checked: = true; p>
PLN: = 3 ; p>
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 ( 'Помилка введення номера дня місяця!' p>
, mtError, [mbOK], 0) = mrOK then begin p>
ComboBox1.ItemIndex: = 8; p>
D0: = StrToInt (ComboBox1.Text); p>
ZD: = StrToInt (ComboBox1 . Text); p>
ZD1: = StrToInt (ComboBox1.Text); end; end; if ComboBox2.ItemIndex = 0 then begin p>
M0: = 1; ZM: = 1; ZM1: = 1; end; p>
-----------------------------------
if ComboBox2.ItemIndex = 11 then begin p>
M0: = 12; ZM: = 12; ZM1: = 12; end; if M0 = 0 then// захист від помилки begin if MessageDlg ( 'Введення значення місяця цифрою недопустиме!', mtError, [mbOK], 0) = mrOK then begin p>
ComboBox2.ItemIndex: = 0; p>
M0: = 1;
ZM: = 1; p>
ZM1: = 1; end; end; p>
R0: = StrToInt (ComboBox3.Text); p>
ZR: = StrToInt (ComboBox3.Text); p>
ZR1: = StrToInt (ComboBox3.Text); if (R02100) then// захист від помилки begin if MessageDlg ( 'Помилка граничних меж дат спостереження 1990 -- 2100рр.. ' p>
, mtError, [mbOK], 0) = mrOK then begin p>
ComboBox3.ItemIndex: = 0; p>
R0: = StrToInt (ComboBox3 . Text); p>
ZR: = StrToInt (ComboBox3.Text); p>
ZR1: = StrToInt (ComboBox3.Text); end; end; p>
FI : = StrToFloat (Edit1.Text); if abs (FI)> 90 then// захист від помилки begin if MessageDlg ( 'Помилка введення географічної широти місцяспостереження! '+ # 13 +' Має бути в межах + -90 градусів ', mtError, [mbOK], 0) = mrOK then begin p>
Edit1.Text: = '56'; p>
FI: = StrToFloat (Edit1.Text); end; end; p>
LB: = StrToFloat (Edit2.Text); if LB p>