49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
from enum import IntEnum
|
|
import math
|
|
|
|
class EDA_ANGLE_T(IntEnum):
|
|
TENTHS_OF_A_DEGREE_T = 0
|
|
DEGREES_T = 1
|
|
RADIANS_T = 2
|
|
|
|
class EDA_ANGLE:
|
|
def __init__(self, value, type):
|
|
if type == int(EDA_ANGLE_T.RADIANS_T):
|
|
self.value = value / (math.pi / 180)
|
|
elif type == int(EDA_ANGLE_T.TENTHS_OF_A_DEGREE_T):
|
|
self.value = value / 10
|
|
else:
|
|
self.value = value
|
|
|
|
def AsDegrees(self):
|
|
return self.value
|
|
|
|
def AsTenthsOfADegree(self):
|
|
return int(self.value * 10)
|
|
|
|
def AsRadians(self):
|
|
return self.value * math.pi / 180
|
|
|
|
def __add__(self, other):
|
|
return EDA_ANGLE(self.value + other.value, EDA_ANGLE_T.DEGREES_T)
|
|
|
|
def __iadd__(self, other):
|
|
self.value += other.value
|
|
return self
|
|
|
|
def __sub__(self, other):
|
|
return EDA_ANGLE(self.value - other.value, EDA_ANGLE_T.DEGREES_T)
|
|
|
|
def __isub__(self, other):
|
|
self.value -= other.value
|
|
return self
|
|
|
|
def __mul__(self, other):
|
|
return EDA_ANGLE(self.value * other, EDA_ANGLE_T.DEGREES_T)
|
|
|
|
def __rmul__(self, other):
|
|
return EDA_ANGLE(other * self.value, EDA_ANGLE_T.DEGREES_T)
|
|
|
|
def __truediv__(self, other):
|
|
return EDA_ANGLE(self.value / other, EDA_ANGLE_T.DEGREES_T)
|