mbcp/docs/api/mp_math/angle.md

424 lines
5.9 KiB
Markdown
Raw Normal View History

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