Source code for aerocaps.units.angle
import numpy as np
from aerocaps.units.unit import Unit
__all__ = [
"Angle"
]
angle_conversions_from_rad = {
'deg': lambda r: np.rad2deg(r),
}
angle_conversions_to_rad = {
'deg': lambda d: np.deg2rad(d),
}
[docs]
class Angle(Unit):
[docs]
def __init__(self, rad=None, deg=None):
self._rad, self._deg = None, None
if rad is not None:
self.rad = rad
elif deg is not None:
self.deg = deg
super().__init__(primary_unit="rad")
[docs]
def set_all(self):
"""After setting the temperature in rad, set the temperature for all other units"""
for k, v in angle_conversions_from_rad.items():
setattr(self, f'_{k}', v(self._rad))
@property
def rad(self):
return self._rad
@rad.setter
def rad(self, value):
self._rad = value
self.set_all()
@property
def deg(self):
return self._deg
@deg.setter
def deg(self, value):
self._rad = angle_conversions_to_rad['deg'](value)
self.set_all()