Added culminate.py demo program.

This commit is contained in:
Don Cross
2019-08-10 18:02:15 -04:00
parent b508069049
commit cb22bd40eb
5 changed files with 52 additions and 19 deletions

34
demo/python/culminate.py Executable file
View File

@@ -0,0 +1,34 @@
#!/usr/bin/env python3
#
# culminate.py - Don Cross - 2019-08-10
#
# Example program for Astronomy Engine:
# https://github.com/cosinekitty/astronomy
#
# This example program shows how to calculate the time
# the Sun, Moon, and planets will next reach their highest point in the sky
# as seen by an observer at a given location on the Earth.
# This is called culmination, and is found by finding when
# each body's "hour angle" is 0.
#
# Having an hour angle of 0 is another way of saying that the body is
# crossing the meridian, the imaginary semicircle in the sky that passes
# from due north on the horizon, through the zenith (straight up),
# toward due south on the horizon. At this moment the body appears to
# have an azimuth of either 180 degrees (due south) or 0 (due north).
import sys
from astronomy import Body, SearchHourAngle
from astro_demo_common import ParseArgs
if __name__ == '__main__':
observer, time = ParseArgs(sys.argv)
body_list = [
Body.Sun, Body.Moon, Body.Mercury, Body.Venus, Body.Mars,
Body.Jupiter, Body.Saturn, Body.Uranus, Body.Neptune, Body.Pluto
]
print('search :', time)
for body in body_list:
evt = SearchHourAngle(body, observer, 0.0, time)
print('{:<8s} : {} altitude={:6.2f} azimuth={:7.2f}'.format(body.name, evt.time, evt.hor.altitude, evt.hor.azimuth))
sys.exit(0)

View File

@@ -1,11 +1,11 @@
search : 2015-02-28T00:00:00.000Z
Sun : 2015-02-28T18:12:32.330Z altitude= 52.13 azimuth= 180.00
Moon : 2015-02-28T01:58:15.580Z altitude= 77.88 azimuth= 180.00
Mercury : 2015-02-28T16:31:18.913Z altitude= 42.57 azimuth= 180.00
Venus : 2015-02-28T20:03:56.863Z altitude= 63.24 azimuth= 180.00
Mars : 2015-02-28T19:52:21.650Z altitude= 62.24 azimuth= 180.00
Jupiter : 2015-02-28T04:40:04.004Z altitude= 77.29 azimuth= 180.00
Saturn : 2015-02-28T11:40:53.866Z altitude= 40.96 azimuth= 180.00
Uranus : 2015-02-28T20:20:51.250Z altitude= 65.12 azimuth= 180.00
Neptune : 2015-02-28T18:04:23.941Z altitude= 50.53 azimuth= 180.00
Pluto : 2015-02-28T14:31:39.410Z altitude= 39.51 azimuth= 180.00
Mercury : 2015-02-28T16:31:18.914Z altitude= 42.57 azimuth= 180.00
Venus : 2015-02-28T20:03:56.864Z altitude= 63.24 azimuth= 180.00
Mars : 2015-02-28T19:52:21.651Z altitude= 62.24 azimuth= 180.00
Jupiter : 2015-02-28T04:40:04.005Z altitude= 77.29 azimuth= 180.00
Saturn : 2015-02-28T11:40:53.867Z altitude= 40.96 azimuth= 180.00
Uranus : 2015-02-28T20:20:51.251Z altitude= 65.12 azimuth= 180.00
Neptune : 2015-02-28T18:04:23.942Z altitude= 50.53 azimuth= 180.00
Pluto : 2015-02-28T14:31:39.411Z altitude= 39.51 azimuth= 180.00

View File

@@ -5,6 +5,8 @@ Fail()
exit 1
}
rm -f test/{moonphase,positions,riseset,seasons,culminate}.txt
echo "Testing example: moonphase.py"
./moonphase.py 2019-06-15T09:15:32.987Z > test/moonphase.txt || Fail "Error running moonphase.py."
diff test/moonphase.txt test/moonphase_correct.txt || Fail "Error comparing moonphase.py output."
@@ -21,12 +23,9 @@ echo "Testing example: seasons.py"
./seasons.py 2019 > test/seasons.txt || Fail "Error running seasons.py."
diff test/seasons.txt test/seasons_correct.txt || Fail "Error comparing seasons.py output."
if false; then
echo "Testing example: culminate.py"
./culminate +30 -90 2015-02-28T00:00Z > test/culminate.txt || Fail "Error running culminate.py."
diff test/culminate.txt test/culminate_correct.txt || Fail "Error comparing culminate.py output."
fi
echo "Testing example: culminate.py"
./culminate.py +30 -90 2015-02-28T00:00:00Z > test/culminate.txt || Fail "Error running culminate.py."
diff test/culminate.txt test/culminate_correct.txt || Fail "Error comparing culminate.py output."
echo "PASS: Python examples"
exit 0