--- title: mbcp.mp_math.angle --- ### ***class*** `Angle` ### ***class*** `AnyAngle` - #### *def* `__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` - #### *def* `complementary(self)` 余角:两角的和为90°。 返回: 余角 - #
源码 ```python @property def complementary(self) -> 'AnyAngle': """ 余角:两角的和为90°。 Returns: 余角 """ return AnyAngle(PI / 2 - self.minimum_positive.radian, is_radian=True) ```
- #### `@property` - #### *def* `supplementary(self)` 补角:两角的和为180°。 返回: 补角 - #
源码 ```python @property def supplementary(self) -> 'AnyAngle': """ 补角:两角的和为180°。 Returns: 补角 """ return AnyAngle(PI - self.minimum_positive.radian, is_radian=True) ```
- #### `@property` - #### *def* `degree(self)` 角度。 返回: 弧度 - #
源码 ```python @property def degree(self) -> float: """ 角度。 Returns: 弧度 """ return self.radian * 180 / PI ```
- #### `@property` - #### *def* `minimum_positive(self)` 最小正角。 返回: 最小正角度 - #
源码 ```python @property def minimum_positive(self) -> 'AnyAngle': """ 最小正角。 Returns: 最小正角度 """ return AnyAngle(self.radian % (2 * PI)) ```
- #### `@property` - #### *def* `maximum_negative(self)` 最大负角。 返回: 最大负角度 - #
源码 ```python @property def maximum_negative(self) -> 'AnyAngle': """ 最大负角。 Returns: 最大负角度 """ return AnyAngle(-self.radian % (2 * PI), is_radian=True) ```
- #### `@property` - #### *def* `sin(self)` 正弦值。 返回: 正弦值 - #
源码 ```python @property def sin(self) -> float: """ 正弦值。 Returns: 正弦值 """ return math.sin(self.radian) ```
- #### `@property` - #### *def* `cos(self)` 余弦值。 返回: 余弦值 - #
源码 ```python @property def cos(self) -> float: """ 余弦值。 Returns: 余弦值 """ return math.cos(self.radian) ```
- #### `@property` - #### *def* `tan(self)` 正切值。 返回: 正切值 - #
源码 ```python @property def tan(self) -> float: """ 正切值。 Returns: 正切值 """ return math.tan(self.radian) ```
- #### `@property` - #### *def* `cot(self)` 余切值。 返回: 余切值 - #
源码 ```python @property def cot(self) -> float: """ 余切值。 Returns: 余切值 """ return 1 / math.tan(self.radian) ```
- #### `@property` - #### *def* `sec(self)` 正割值。 返回: 正割值 - #
源码 ```python @property def sec(self) -> float: """ 正割值。 Returns: 正割值 """ return 1 / math.cos(self.radian) ```
- #### `@property` - #### *def* `csc(self)` 余割值。 返回: 余割值 - #
源码 ```python @property def csc(self) -> float: """ 余割值。 Returns: 余割值 """ return 1 / math.sin(self.radian) ```
- #### *def* `__add__(self, other: 'AnyAngle')` - #
源码 ```python def __add__(self, other: 'AnyAngle') -> 'AnyAngle': return AnyAngle(self.radian + other.radian, is_radian=True) ```
- #### *def* `__eq__(self, other)` - #
源码 ```python def __eq__(self, other): return approx(self.radian, other.radian) ```
- #### *def* `__sub__(self, other: 'AnyAngle')` - #
源码 ```python def __sub__(self, other: 'AnyAngle') -> 'AnyAngle': return AnyAngle(self.radian - other.radian, is_radian=True) ```
- #### *def* `__mul__(self, other: float)` - #
源码 ```python def __mul__(self, other: float) -> 'AnyAngle': return AnyAngle(self.radian * other, is_radian=True) ```
- #### *def* `__repr__(self)` - #
源码 ```python def __repr__(self): return f'AnyAngle({self.radian}, is_radian=True)' ```
- #### *def* `__str__(self)` - #
源码 ```python def __str__(self): return f'AnyAngle({self.degree}° or {self.radian} rad)' ```
- #### `@overload` - #### *def* `__truediv__(self, other: float)` - #
源码 ```python @overload def __truediv__(self, other: float) -> 'AnyAngle': ... ```
- #### `@overload` - #### *def* `__truediv__(self, other: 'AnyAngle')` - #
源码 ```python @overload def __truediv__(self, other: 'AnyAngle') -> float: ... ```
- #### *def* `__truediv__(self, other)` - #
源码 ```python def __truediv__(self, other): if isinstance(other, AnyAngle): return self.radian / other.radian return AnyAngle(self.radian / other, is_radian=True) ```