<?php
require_once("MoonRiSet.cls.php");
$moon = new MoonRiSet();
echo "Měsíc dnes vychází v {$moon->rise["hh:mm"]} a zapadá v {$moon->set["hh:mm"]}"
.", přes místní poledník přejde v {$moon->transit["hh:mm"]}";
?>
$moon = new MoonRiSet([$latitude [, $longitude [, $timezone]]]);
float $latitude: zeměpisná šířka místa ve stupních, pokud není zadána, použije se výchozí hodnota ze systému (ini_get("date.default_latitude")).
Šířka na jih od rovníku je záporné číslo.
float $longitude: zeměpisná délka místa ve stupních, pokud není zadána, použije se výchozí hodnota ze systému: (ini_get("date.default_longitude")).
Délka na západ od nultého poledníku je záporné číslo.
string $timezone: časová zóna místa z PHP: List of Supported Timezones,
pokud není zadána, použije se výchozí hodnota ze systému: (ini_get("date.timezone")).
bool $moon->setDate($year, $month, $day);
Všechny parametry jsou typu int. Metoda vrací true v případě zdárného výpočtu okamžiku východu a západu Měsíce.
float $moon->rise["timestamp"]; string $moon->rise["hh:mm"]; string $moon->rise["hhmm"]; float $moon->set["timestamp"]; string $moon->set["hh:mm"]; string $moon->set["hhmm"]; float $moon->transit["timestamp"]; string $moon->transit["hh:mm"]; string $moon->transit["hhmm"];
Timestamp je unixová časová značka, běžně používaná v PHP. Ostatni formáty uvádějí vždy pouze hodiny a minuty jako textový řetězec.
Někdy mohou nastat zvláštní případy, například v určený den Měsíc nezapadá, ale pouze vychází. Pak timestamp pro západ vraci true a ostatní formáty vrací mezery.
Naopak, pokud v zadaný den Měsíc nevychází, ale pouze zapadá, vrací timestamp false a ostatní formáty vrací zase mezery.
Ve vyšších zeměpisných šířkách Měsíc po celý den buď vůbec nezapadá, pak timestamp východu i západu vrací true, zbylé formáty vrací "****" a "**:**".
Nebo Měsíc celý den nevyjde, timestamp obou hodnot pak vrací false, zbylé formáty vrací "----" a "--:--". Při univerzálním použití
této třídy je tedy nutné vždy provádět testy na viditelnost, ted například if ($moon->rise["timestamp"] === false) a podobně.
Přiklad použití je ve vzorovém programu world.php.
float $moon->rise2["timestamp"]; string $moon->rise2["hh:mm"]; string $moon->rise2["hhmm"]; float $moon->set2["timestamp"]; string $moon->set2["hh:mm"]; string $moon->set2["hhmm"];
Pokud neexistuje druhý východ či západ, obsahují proměnné hodnotu false.
Přiklad použití je ve vzorovém programu table.php. V našich šířkách není však třeba brát na toto ohled.
Rise and Set for the Moon for 2012
Latitude = 50.1° Longitude = 14.4° Timezone = Europe/Prague
Jan. Feb. Mar. Apr. May June July Aug. Sept. Oct. Nov. Dec.
Day Rise Set Rise Set Rise Set Rise Set Rise Set Rise Set Rise Set Rise Set Rise Set Rise Set Rise Set Rise Set
h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m h m
01 1114 0012 1103 0214 1024 0156 1314 0338 1435 0259 1730 0241 1856 0233 1957 0444 1939 0720 1852 0828 1809 0924 1841 0939
02 1136 0118 1143 0313 1115 0247 1426 0408 1553 0322 1851 0314 1958 0329 2027 0559 2002 0829 1919 0934 1856 1015 1942 1014
03 1201 0223 1232 0408 1216 0331 1543 0435 1713 0347 2008 0355 2049 0436 2052 0715 2025 0937 1952 1037 1950 1059 2047 1043
04 1231 0325 1328 0458 1323 0409 1700 0500 1836 0414 2117 0447 2127 0550 2114 0827 2050 1043 2029 1136 2049 1138 2153 1109
05 1306 0429 1434 0539 1435 0443 1822 0524 2000 0445 2212 0549 2159 0708 2135 0939 2119 1147 2112 1231 2151 1212 2302 1134
06 1349 0526 1546 0614 1552 0511 1945 0549 2121 0522 2257 0701 2226 0823 2157 1047 2151 1250 2201 1320 2258 1241 1157
07 1443 0619 1700 0645 1710 0536 2109 0618 2234 0609 2332 0816 2250 0938 2221 1153 2231 1346 2258 1402 1307 0011 1221
08 1545 0706 1818 0712 1831 0600 2231 0652 2336 0707 0933 2311 1048 2248 1259 2318 1440 2359 1440 0006 1330 0125 1246
09 1652 0745 1936 0736 1952 0625 2348 0734 0813 0000 1046 2332 1157 2318 1401 1528 1512 0117 1354 0240 1314
10 1806 0816 2056 0759 2115 0652 0823 0024 0926 0024 1157 2354 1304 2353 1503 0010 1608 0105 1541 0232 1419 0359 1347
11 1920 0844 2215 0823 2236 0722 0053 0924 0102 1040 0045 1306 1409 1559 0110 1643 0215 1606 0348 1447 0518 1429
12 2037 0909 2335 0849 2354 0757 0147 1031 0133 1152 0106 1411 0017 1514 0035 1649 0216 1714 0326 1630 0509 1519 0634 1523
13 2152 0932 0920 0839 0230 1141 0159 1303 0127 1518 0045 1615 0125 1735 0324 1742 0442 1655 0629 1558 0742 1625
14 2311 0954 0052 0957 0103 0932 0302 1254 0221 1410 0150 1621 0117 1714 0223 1814 0437 1807 0558 1722 0749 1645 0838 1739
15 1018 0207 1041 0204 1033 0330 1403 0241 1517 0215 1724 0156 1809 0325 1846 0550 1832 0719 1752 0901 1744 0925 1856
16 0028 1044 0311 1134 0251 1139 0354 1512 0301 1622 0243 1826 0241 1857 0434 1915 0708 1856 0840 1827 1003 1852 1002 2014
17 0147 1115 0407 1238 0329 1251 0415 1618 0322 1727 0317 1922 0334 1939 0544 1941 0825 1923 1001 1908 1051 2006 1032 2130
18 0303 1154 0453 1346 0400 1400 0436 1725 0345 1831 0358 2015 0435 2016 0658 2006 0946 1954 1114 2001 1131 2121 1057 2243
19 0416 1243 0528 1459 0427 1512 0456 1830 0411 1932 0447 2102 0539 2047 0812 2030 1104 2032 1220 2102 1203 2235 1120 2353
20 0520 1340 0557 1611 0449 1619 0517 1934 0442 2033 0542 2140 0649 2114 0928 2055 1221 2116 1314 2210 1230 2348 1143
21 0612 1449 0622 1722 0510 1727 0540 2039 0518 2128 0645 2214 0800 2137 1045 2121 1329 2208 1356 2323 1254 1206 0100
22 0655 1601 0644 1832 0529 1834 0607 2140 0601 2218 0751 2243 0912 2200 1202 2152 1428 2311 1431 1316 0056 1231 0206
23 0729 1716 0705 1939 0549 1939 0640 2239 0652 2302 0859 2309 1026 2224 1319 2230 1518 1501 0034 1337 0205 1258 0309
24 0756 1829 0725 2047 0612 2044 0719 2333 0750 2339 1011 2332 1140 2249 1431 2317 1557 0019 1526 0147 1400 0309 1328 0412
25 0819 1940 0745 2151 0737 2247 0804 0852 1122 2354 1257 2317 1537 1628 0131 1548 0256 1425 0415 1405 0511
26 0839 2049 0807 2256 0805 2349 0856 0020 1000 0010 1236 1413 2349 1632 0012 1656 0243 1610 0405 1455 0518 1449 0605
27 0859 2155 0833 2359 0839 0957 0102 1108 0037 1351 0017 1530 1719 0116 1721 0355 1632 0512 1528 0619 1539 0656
28 0919 2302 0903 0920 0045 1100 0138 1220 0102 1509 0042 1640 0028 1757 0227 1744 0506 1555 0517 1606 0718 1634 0739
29 0941 0940 0059 1008 0139 1210 0208 1333 0126 1627 0112 1745 0119 1827 0341 1806 0614 1622 0623 1652 0810 1735 0815
30 1004 0007 1103 0225 1321 0235 1450 0149 1745 0149 1839 0219 1853 0456 1828 0723 1652 0727 1744 0857 1839 0847
31 1031 0111 1206 0304 1608 0214 1922 0328 1917 0608 1728 0827 1944 0915
unzip -l moon_riset.zip
Archive: moon_riset.zip
Length Date Time Name
-------- ---- ---- ----
12644 01-15-12 13:31 MoonRiSet.cls.php
2122 01-09-12 11:20 table.php
2582 01-15-12 13:35 world.php
-------- -------
17348 3 files
Program table.php vytváří výše uvedenou tabulku a program world.php zobrazuje východy a západy Měsíce v různých místech na světě pro dnešní den.
Pro výpočet polohy Měsíce na obloze je použito zkrácených výpočtů dle Low precision formulae for planetary position, Flandern & Pulkkinen. Přesnost polohy je ±5' v rektascenzi a ±1' v deklinaci pro nejbližší století, to je zcela dostatečná přesnost pro výpočet východu a západu Měsíce. Pro podrobnější studium doporučuji knihu Oliver Montenbruck and Thomas Pfleger: "Astronomy on the Personal Computer", Springer (bohužel cena je 100$). Algoritmus výpočtu je i na Approximate astronomical positions.
