Source code for morse.modifiers.ecef

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

from morse.modifiers.abstract_modifier import AbstractModifier
from morse.helpers.coordinates import CoordinateConverter
import numpy

[docs]class ECEFmodifier(AbstractModifier): """ This modifier converts the coordinates from MORSE simulator (in LTP) into ECEF-r 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 ECEF modifier provides as modifiers: * :py:class:`morse.modifiers.ecef.CoordinatesToECEF` * :py:class:`morse.modifiers.ecef.CoordinatesFromECEF` """ _name = "ECEF"
[docs] def initialize(self): self.converter = CoordinateConverter.instance()
[docs] def modify(self): try: xe = numpy.matrix( [ self.data['x'], self.data['y'], self.data['z'] ]) xt = self.method(xe) logger.info("%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)
[docs]class CoordinatesToECEF(ECEFmodifier): """ Converts from Blender coordinates to ECEF coordinates. """
[docs] def initialize(self): ECEFmodifier.initialize(self)
[docs] def method(self, xt): return self.converter.ltp_to_ecef(self.converter.blender_to_ltp(xt))
[docs]class CoordinatesFromECEF(ECEFmodifier): """ Converts from UTM coordinates to Blender coordinates. """
[docs] def initialize(self): ECEFmodifier.initialize(self)
[docs] def method(self, xt): return self.converter.blender_to_ltp(self.converter.ecef_to_ltp(xt))