From d2346051e3f364c7d8767f591ec9d91f4e6e5cf4 Mon Sep 17 00:00:00 2001 From: Don Cross Date: Wed, 26 Jun 2019 06:05:24 -0400 Subject: [PATCH] Python: Implemented HelioVector function. --- generate/template/astronomy.py | 22 ++++++++++++++++++++++ source/python/astronomy.py | 22 ++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/generate/template/astronomy.py b/generate/template/astronomy.py index 14f1e7ad..8d319339 100644 --- a/generate/template/astronomy.py +++ b/generate/template/astronomy.py @@ -934,6 +934,9 @@ def _CalcVsop(model, time): vz = 0.397776982902*ey + 0.917482137087*ez return Vector(vx, vy, vz, time) +def _CalcEarth(time): + return _CalcVsop(_vsop[BODY_EARTH], time) + # END VSOP #---------------------------------------------------------------------------- # BEGIN CHEBYSHEV @@ -966,3 +969,22 @@ def _CalcChebyshev(model, time): # END CHEBYSHEV #---------------------------------------------------------------------------- + +def HelioVector(body, time): + if body == BODY_PLUTO: + return _CalcChebyshev(_pluto, time) + + if 0 <= body <= len(_vsop): + return _CalcVsop(_vsop[body], time) + + if body == BODY_SUN: + return Vector(0.0, 0.0, 0.0, time) + + if body == BODY_MOON: + e = _CalcEarth(time) + m = GeoMoon(time) + return Vector(e.x+m.x, e.y+m.y, e.z+m.z, time) + + raise InvalidBodyError() + + diff --git a/source/python/astronomy.py b/source/python/astronomy.py index 0c13a3bc..31608a29 100644 --- a/source/python/astronomy.py +++ b/source/python/astronomy.py @@ -1625,6 +1625,9 @@ def _CalcVsop(model, time): vz = 0.397776982902*ey + 0.917482137087*ez return Vector(vx, vy, vz, time) +def _CalcEarth(time): + return _CalcVsop(_vsop[BODY_EARTH], time) + # END VSOP #---------------------------------------------------------------------------- # BEGIN CHEBYSHEV @@ -1804,3 +1807,22 @@ def _CalcChebyshev(model, time): # END CHEBYSHEV #---------------------------------------------------------------------------- + +def HelioVector(body, time): + if body == BODY_PLUTO: + return _CalcChebyshev(_pluto, time) + + if 0 <= body <= len(_vsop): + return _CalcVsop(_vsop[body], time) + + if body == BODY_SUN: + return Vector(0.0, 0.0, 0.0, time) + + if body == BODY_MOON: + e = _CalcEarth(time) + m = GeoMoon(time) + return Vector(e.x+m.x, e.y+m.y, e.z+m.z, time) + + raise InvalidBodyError() + +