Zdeněk Buk - Homepage
-------------------------
Kategorie:
 ·Všechny
 ·Astronomie
 ·Elektronika
 ·Fotografování
 ·Počítače
 ·Ostatní
Další:
 ·O mně...
Počet přístupů:
[CNW:Counter]

Linux Powered
Program pro výpočet polohy planet - Antares v.0.1
(03.11.2002)  Kategorie: Počítače
Jako semestrální práci do předmětu "Programovací jazyk C" jsem napsal program pro výpočet poloh planet naší Sluneční soustavy.

1. Úvod

Antares je program pro základní astronomické výpočty v rámci sluneční soustavy. Začal vznikat původně pro moje vlastní použití a také proto, že se začínám zajímat o astronomii a tato problematika mě stále více zajímá, poté jsem z něj udělal semestrální práci do předmětu 36PJC (Programovací jazyk C) na  ČVUT/FEL.
Po zadání pozorovatelovy polohy a času spočítá program polohu slunce, heliocentrické elkiptikální sférické a pravoúhlé souřadnice, geocentrické  pravoúlé souřadnice, rektascenzi, deklinaci a azimutární souřadnice planet. Program má již v této verzi implementovánu částečnou podporu pro výpočet polohy hvězd a také Messierův katalog, ale tyto funkce nejsou ve verzi 0.1 dostupné a plánuji je kompletně implementovat až v příští verzi.

Poznámka k názvu programu:  Dlouho jsem premýšlel, jak tento program nazvat. Listoval jsem knížkou Patricka Moora - Hvězdy a Planety - tak dlouho, až jsem našel dostatečně zajímavý a vhodný název. Takže: Antares je hvězda spektrální třídy M1 patřící svojí velikostí do kategorie "Veleobrů", její centrální teplota dosahuje hodnoty 100 milionů stupňů Celsia. Nachazí se ve vzdálenosti 330 svetelných roků v souhvězdí Štíra (Scorpius), v blízkosti kulové hvězdokupy M4.

2. Implementace

Program Antares je napsán v jazyce ANSI C, pro operačí systém GNU-Linux. Ve verzi 0.1 je možné jej kompilovat ve dvou režimech - pro práci s menu, nebo pro řádkově orientované rozhraní (snadnější portovatelnost na jiné platformy), podrobnosti viz. odstavec kompilace.
Používá veřejně dostupné a víceméně známé astronomické algoritmy pro výpočty souřadnic a poloh, v odstavci Odkazy uvádím seznam literatury a internetových adres, ze kterých jsem čerpal informace.

Program používá knihovnu curses pro práci s okny (v textovém režimu).

Zdrojové kódy programu se skládají z následujících souborů:

astro.c
Knihovna pro astronomické výpočty.
astro.h
Hlavičkový soubor pro knihovny astro.c (hlavičky funkcí a datové typy)
global.h
Některé globální definice, především makra pro možnost překladu ve dvou režimech.
main.c
Hlavní program, využívá funkce z knihovny astro.c a ostatních, obsahuje hlavní programovou smyčku.
menu.c
Knihovna pro práci s menu, obsahuje také definici hlavního menu aplikace.
menu.h
Hlavičkový soubor pro knihovnu menu.c
messier.c
Data Messierova katalogu (v této verzi se nepoužívá)
messier.h
Hlavičkový soubor pro Messierův katalog, obsahuje definici datového typu popisujícího položky katalogu.
planets.c
Data pro výpočet polohy planet, dráhové elementy, a také obecné informace o planetách.
planets.h
Hlavičkový soubor pro katalog planet, planets.c
ui.c
Knihovna pro práci s uživatelským rozhraním, především inicializace a deinicializace potřebných proměnných.
ui.h
Hlavičkový soubor pro knihovnu ui.c

3. Ovládání

Ovládání programu je velmi jednoduché a ve většině případů stačí tři klávesy (mimo zadávání číselných údajů).
  • Pokud je program přeložen v řádkovém režimu, probíhá ovládání pomocí nabídek, ve kterých uživatel vybírá volbu zadáním čísla patřičné položky v nabídce. Tento režim není sice tak interaktivní a možná někomu bude v dnešní době připadat poněkud předpotopní, ale vzhledem k povaze programu (podotýkám, že se nejedná o žádnou interaktivní akční hru) je více než postačující, navíc umožňuje snadnou přenostitelnost na jiné platformy, protože využívá v podstatě pouze knihovní funkce printf a scanf.
  • Pokud se při kompilaci využije druhá možnost a program je přeložen v režimu s podporou menu, je práce s programem o něco jednodušší a pro vetšinu lidí asi přijatelnější. Celý program se pak ovládá pomocí menu, umístěného na pravé straně. Z něj položky vybírají pomocí kláves "a"/"z" pro posun nahoru/dolů a potvrzení volby se provede mezerníkem. Druhá skupina ovládácích kláves je "j", "k" (nahoru, dolů) a "l" (potvrzení), zde jsem se inspiroval programy "vi" a "lynx". Pro ovládání jsem úmyslně zvolil tyto alfanumerické klávesu (namísto, možná standardnějších, kurzorových kláves) kvůli možnosti ovládání programu i na poněkud "hloupějších" terminálech.
Popis jednotlivých voleb:

Zobrazeni nastaveni
Vypíše aktuální nastavení programu: čas, datum polohu pozorovatele.
Nastaveni casu
Umožňuje nastavení aktuálního času (viz. ještě poznámka pod tímto seznamem)
Nastaveni data
Umožňuje nastavení datumu pozrování v rozsahu od 1.1.1900 do 31.12.2099
Nastaveni polohy
Nastavení zeměpisné šířky a délky místa pozorování na Zemi
Vypocet polohy slunce
Zobrazení aktuální (podle zadaného data a času) polohy slunce - azimutární souřadnice
Souradnice planet (h)
Výpočet heliocentrických ekliptikáních pravoúhlých a sférických souřadnic planet
Souradnice planet (g)
Výpočet geocentrických (i rovníkových) pravoúhlých souřadnic planet
Vypocet polohy planet
Zobrazí polohy planet v (pro smrtelníka asi nejpřijatelnějších) azimutárních souřadnicích
Elementy drah planet
Výpočet elementů drah planet, data potřebná pro řešení Keplerovy rovnice, pohyb po elipse
Merkur, Venuse...
"Encyklopedie" planet, obsahuje informace o oběžné době, hmotnosti, době rotace, měsících apod....
Konec programu
Tuto funkci jsem původně do tak skvělého programu ani nechtěl dávat :-)

Poznámka k zadávaní času:  Program očekává zadání času v hodnotách Světového času SČ (UT), nikoliv Středoevropského (SEČ), či dokonce Středoevropského letního (SELČ) času. Při zadávání času je nutné si toto uvědomit, jinak program bude počítat neco úplně jiného, než uživatel očekává. Vzorečky pro přepočet časů: SEČ=SČ+1h,  SELČ=SEČ+1h.

4.  Kompilace

Program jsem vyvíjel, testoval a odladil na této konfiguraci:
Operační systém:
RedHat Linux 7.1CZ
Verze jádra:
2.4.2-2SMP, i686
Překladač:
gcc 2.96-81
glibc
2.2.2


Překlad programu je velkmi jednoduchý a snad by neměl činit žádné problémy. Jak jsem již nekolikrát zmínil, je možné program přeložit ve dvou režimech. Překlad se uskuteční po zadání následujícího příkazu (v adresáři se zdrojovými soubory).
  • rádkový režim: make nomenu
  • režim s podporou menu (defaultní): make
Po dokončení tohoto příkazu se vytvoří soubor "antares", který je již spustitelným binárním souborem a po jeho spuštění si můžete do systosti vychutnávat program Antares.

Pokud chcete odstranit všechny soubory vzniklé kompilací (pro další používání programu nejsou potřebné), lze tak učinit pomocí příkazu: make clean
Příkaz make distclean odstraní i vlastní spustitelný soubor, takže vám zůstanou opět jen zdrojové soubory.

Ještě znovu upozorňuji, že program využívá knihovnu curses, a pro kompilaci v režimu menu (implicitní), je potřeba ji mít.

5. Download

Zde si můžete program stáhnout (ve formě zdrojových kódů):
antares_0.1.tar.gz, 18.1kB

Pokud se vám program líbí, nebo máte nějaké připomínky či náměty, budu rád, když mi napíšete. Upozorňuji však že jsem začátečník (a když píši začátečník, mám opravdu na mysli začátečníka s triedrem v ruce :-) ) na poli astronomie, takže pravděpodobně nebudu schopen se s vámi pustit do hlubších debat. Ale na druhou stranu se rád něco nového v tomto oboru přiučím.

6. Odkazy

Seznam literatury ze které jsem čerpal.

6.1. Tištěné materiály

  • Zdeněk Pokorný - Astronomické algoritmy pro kalkulátory, 1998 (Hvězdárna a planetárium hl.m. Prahy)
  • Patrick Moore - Hvězdy a planety
  • Pavel Příhoda, Helena Holovská - Průvodce astronomií, pro posluchače 1. ročníku astronomického kursu
  • Hans-Jochen Bartsch - Matematické vzorce
  • Pavel Příhoda a kol. - Malý astronomický kalendář Vesmír 2002

6.2. Internet




zdenek_buk@seznam.cz