Source code for morse.modifiers.geocentric

import logging; logger = logging.getLogger("morse." + __name__)

from morse.modifiers.abstract_modifier import AbstractModifier
from morse.helpers.coordinates import CoordinateConverter
from math import degrees, radians
import numpy

[docs]class Geocentricmodifier(AbstractModifier): """ This modifier converts the coordinates from MORSE simulator (in LTP) into Geocentric coordinates. To work properly, you need to configure the following variables at the environment level: - **longitude** in degrees (double) of Blender origin - **latitude** in degrees (double) of Blender origin - **altitude** in m of the Blender origin The Geocentric modifier provides as modifiers: * :py:class:`morse.modifiers.ecef.CoordinatesToGeocentric` * :py:class:`morse.modifiers.ecef.CoordinatesFromGeocentric` """ _name = "Geocentric"
[docs] def initialize(self): self.converter = CoordinateConverter.instance()
[docs]class CoordinatesToGeocentric(Geocentricmodifier): """ Converts from Blender coordinates to Geocentric coordinates. """
[docs] def modify(self): try: xe = numpy.matrix( [ self.data['x'], self.data['y'], self.data['z'] ]) xt = self.converter.ecef_to_geocentric( self.converter.ltp_to_ecef( self.converter.blender_to_ltp(xe))) logger.debug("%s => %s" % (xe, xt)) self.data['x'] = degrees(xt[0, 0]) self.data['y'] = degrees(xt[0, 1]) self.data['z'] = xt[0, 2] except KeyError as detail: self.key_error(detail)
[docs]class CoordinatesFromGeocentric(Geocentricmodifier): """ Converts from Geocentric coordinates to Blender coordinates. """
[docs] def modify(self): try: logger.info(self.data) xe = numpy.matrix( [ radians(self.data['x']), radians(self.data['y']), self.data['z'] ]) xt = self.converter.blender_to_ltp( self.converter.ecef_to_ltp( self.converter.geocentric_to_ecef(xe))) logger.debug("%s => %s" % (xe, xt)) self.data['x'] = xt[0, 0] self.data['y'] = xt[0, 1] self.data['z'] = xt[0, 2] except KeyError as detail: self.key_error(detail)