--- title: mbcp.mp_math.angle --- ### **class** `Angle` ### **class** `AnyAngle(Angle)` ### *method* `__init__(self, value: float, is_radian: bool = False)` 任意角度。 **参数**: - value: 角度或弧度值 - is_radian: 是否为弧度,默认为否
源代码 ```python def __init__(self, value: float, is_radian: bool=False): """ 任意角度。 Args: value: 角度或弧度值 is_radian: 是否为弧度,默认为否 """ if is_radian: self.radian = value else: self.radian = value * PI / 180 ```
### `@property` ### *method* `complementary(self) -> AnyAngle` 余角:两角的和为90°。 **返回**: - 余角
源代码 ```python @property def complementary(self) -> 'AnyAngle': """ 余角:两角的和为90°。 Returns: 余角 """ return AnyAngle(PI / 2 - self.minimum_positive.radian, is_radian=True) ```
### `@property` ### *method* `supplementary(self) -> AnyAngle` 补角:两角的和为180°。 **返回**: - 补角
源代码 ```python @property def supplementary(self) -> 'AnyAngle': """ 补角:两角的和为180°。 Returns: 补角 """ return AnyAngle(PI - self.minimum_positive.radian, is_radian=True) ```
### `@property` ### *method* `degree(self) -> float` 角度。 **返回**: - 弧度
源代码 ```python @property def degree(self) -> float: """ 角度。 Returns: 弧度 """ return self.radian * 180 / PI ```
### `@property` ### *method* `minimum_positive(self) -> AnyAngle` 最小正角。 **返回**: - 最小正角度
源代码 ```python @property def minimum_positive(self) -> 'AnyAngle': """ 最小正角。 Returns: 最小正角度 """ return AnyAngle(self.radian % (2 * PI)) ```
### `@property` ### *method* `maximum_negative(self) -> AnyAngle` 最大负角。 **返回**: - 最大负角度
源代码 ```python @property def maximum_negative(self) -> 'AnyAngle': """ 最大负角。 Returns: 最大负角度 """ return AnyAngle(-self.radian % (2 * PI), is_radian=True) ```
### `@property` ### *method* `sin(self) -> float` 正弦值。 **返回**: - 正弦值
源代码 ```python @property def sin(self) -> float: """ 正弦值。 Returns: 正弦值 """ return math.sin(self.radian) ```
### `@property` ### *method* `cos(self) -> float` 余弦值。 **返回**: - 余弦值
源代码 ```python @property def cos(self) -> float: """ 余弦值。 Returns: 余弦值 """ return math.cos(self.radian) ```
### `@property` ### *method* `tan(self) -> float` 正切值。 **返回**: - 正切值
源代码 ```python @property def tan(self) -> float: """ 正切值。 Returns: 正切值 """ return math.tan(self.radian) ```
### `@property` ### *method* `cot(self) -> float` 余切值。 **返回**: - 余切值
源代码 ```python @property def cot(self) -> float: """ 余切值。 Returns: 余切值 """ return 1 / math.tan(self.radian) ```
### `@property` ### *method* `sec(self) -> float` 正割值。 **返回**: - 正割值
源代码 ```python @property def sec(self) -> float: """ 正割值。 Returns: 正割值 """ return 1 / math.cos(self.radian) ```
### `@property` ### *method* `csc(self) -> float` 余割值。 **返回**: - 余割值
源代码 ```python @property def csc(self) -> float: """ 余割值。 Returns: 余割值 """ return 1 / math.sin(self.radian) ```
### *method* `self + other: AnyAngle => AnyAngle`
源代码 ```python def __add__(self, other: 'AnyAngle') -> 'AnyAngle': return AnyAngle(self.radian + other.radian, is_radian=True) ```
### *method* `__eq__(self, other)`
源代码 ```python def __eq__(self, other): return approx(self.radian, other.radian) ```
### *method* `self - other: AnyAngle => AnyAngle`
源代码 ```python def __sub__(self, other: 'AnyAngle') -> 'AnyAngle': return AnyAngle(self.radian - other.radian, is_radian=True) ```
### *method* `self * other: float => AnyAngle`
源代码 ```python def __mul__(self, other: float) -> 'AnyAngle': return AnyAngle(self.radian * other, is_radian=True) ```
### `@overload` ### *method* `self / other: float => AnyAngle`
源代码 ```python @overload def __truediv__(self, other: float) -> 'AnyAngle': ... ```
### `@overload` ### *method* `self / other: AnyAngle => float`
源代码 ```python @overload def __truediv__(self, other: 'AnyAngle') -> float: ... ```
### *method* `self / other`
源代码 ```python def __truediv__(self, other): if isinstance(other, AnyAngle): return self.radian / other.radian return AnyAngle(self.radian / other, is_radian=True) ```