PY: Added PlanetOrbitalPeriod function.

This commit is contained in:
Don Cross
2022-11-01 17:30:48 -04:00
parent fd49c25ae3
commit 23fd95a53f
5 changed files with 66 additions and 13 deletions

View File

@@ -420,6 +420,23 @@ class NoConvergeError(Error):
def __init__(self):
Error.__init__(self, 'Numeric solver did not converge - please report issue at https://github.com/cosinekitty/astronomy/issues')
def PlanetOrbitalPeriod(body):
"""Returns the average number of days it takes for a planet to orbit the Sun.
Parameters
----------
body : Body
One of the planets: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune, or Pluto.
Returns
-------
float
The mean orbital period of the body in days.
"""
if isinstance(body, Body) and (0 <= body.value < len(_PlanetOrbitalPeriod)):
return _PlanetOrbitalPeriod[body.value]
raise InvalidBodyError()
def _SynodicPeriod(body):
if body == Body.Earth:
raise EarthNotAllowedError()

View File

@@ -420,6 +420,23 @@ class NoConvergeError(Error):
def __init__(self):
Error.__init__(self, 'Numeric solver did not converge - please report issue at https://github.com/cosinekitty/astronomy/issues')
def PlanetOrbitalPeriod(body):
"""Returns the average number of days it takes for a planet to orbit the Sun.
Parameters
----------
body : Body
One of the planets: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune, or Pluto.
Returns
-------
float
The mean orbital period of the body in days.
"""
if isinstance(body, Body) and (0 <= body.value < len(_PlanetOrbitalPeriod)):
return _PlanetOrbitalPeriod[body.value]
raise InvalidBodyError()
def _SynodicPeriod(body):
if body == Body.Earth:
raise EarthNotAllowedError()

View File

@@ -1265,24 +1265,12 @@ def Refraction():
#-----------------------------------------------------------------------------------------------------------
PlanetOrbitalPeriod = {
astronomy.Body.Mercury: 87.969,
astronomy.Body.Venus: 224.701,
astronomy.Body.Earth: 365.256,
astronomy.Body.Mars: 686.980,
astronomy.Body.Jupiter: 4332.589,
astronomy.Body.Saturn: 10759.22,
astronomy.Body.Uranus: 30685.4,
astronomy.Body.Neptune: 60189.0,
astronomy.Body.Pluto: 90560.0
}
def PlanetApsis():
start_time = astronomy.Time.Make(1700, 1, 1, 0, 0, 0)
body = astronomy.Body.Mercury
while body.value <= astronomy.Body.Pluto.value:
count = 1
period = PlanetOrbitalPeriod[body]
period = astronomy.PlanetOrbitalPeriod(body)
filename = os.path.join('apsides', 'apsis_{}.txt'.format(body.value))
min_interval = -1.0
max_diff_days = 0.0

View File

@@ -2345,6 +2345,20 @@ A pivoted matrix object.
---
<a name="PlanetOrbitalPeriod"></a>
### PlanetOrbitalPeriod(body)
**Returns the average number of days it takes for a planet to orbit the Sun.**
| Type | Parameter | Description |
| --- | --- | --- |
| [`Body`](#Body) | `body` | One of the planets: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune, or Pluto. |
**Returns**: `float`
The mean orbital period of the body in days.
---
<a name="RefractionAngle"></a>
### RefractionAngle(refraction, altitude)

View File

@@ -420,6 +420,23 @@ class NoConvergeError(Error):
def __init__(self):
Error.__init__(self, 'Numeric solver did not converge - please report issue at https://github.com/cosinekitty/astronomy/issues')
def PlanetOrbitalPeriod(body):
"""Returns the average number of days it takes for a planet to orbit the Sun.
Parameters
----------
body : Body
One of the planets: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune, or Pluto.
Returns
-------
float
The mean orbital period of the body in days.
"""
if isinstance(body, Body) and (0 <= body.value < len(_PlanetOrbitalPeriod)):
return _PlanetOrbitalPeriod[body.value]
raise InvalidBodyError()
def _SynodicPeriod(body):
if body == Body.Earth:
raise EarthNotAllowedError()