📝 测试文档部署

This commit is contained in:
2024-08-28 21:27:52 +08:00
parent 0320f13ae9
commit de42d34e38
16 changed files with 493 additions and 426 deletions

View File

@ -5,19 +5,19 @@ title: mbcp.mp_math.angle
### ***class*** `AnyAngle`
- #### *def* `__init__(self, value: float, is_radian: bool = False)`
### *def* `__init__(self, value: float, is_radian: bool = False)`
任意角度。
参数:
value: 角度或弧度值
- value: 角度或弧度值
- is_radian: 是否为弧度,默认为否
is_radian: 是否为弧度,默认为否
- #
<details>
<summary>源码</summary>
@ -36,18 +36,18 @@ def __init__(self, value: float, is_radian: bool=False):
```
</details>
- #### `@property`
- #### *def* `complementary(self)`
### `@property`
### *def* `complementary(self) -> 'AnyAngle'`
余角两角的和为90°。
返回:
余角
- 余角
- #
<details>
<summary>源码</summary>
@ -63,18 +63,18 @@ def complementary(self) -> 'AnyAngle':
```
</details>
- #### `@property`
- #### *def* `supplementary(self)`
### `@property`
### *def* `supplementary(self) -> 'AnyAngle'`
补角两角的和为180°。
返回:
补角
- 补角
- #
<details>
<summary>源码</summary>
@ -90,18 +90,18 @@ def supplementary(self) -> 'AnyAngle':
```
</details>
- #### `@property`
- #### *def* `degree(self)`
### `@property`
### *def* `degree(self) -> float`
角度。
返回:
弧度
- 弧度
- #
<details>
<summary>源码</summary>
@ -117,18 +117,18 @@ def degree(self) -> float:
```
</details>
- #### `@property`
- #### *def* `minimum_positive(self)`
### `@property`
### *def* `minimum_positive(self) -> 'AnyAngle'`
最小正角。
返回:
最小正角度
- 最小正角度
- #
<details>
<summary>源码</summary>
@ -144,18 +144,18 @@ def minimum_positive(self) -> 'AnyAngle':
```
</details>
- #### `@property`
- #### *def* `maximum_negative(self)`
### `@property`
### *def* `maximum_negative(self) -> 'AnyAngle'`
最大负角。
返回:
最大负角度
- 最大负角度
- #
<details>
<summary>源码</summary>
@ -171,18 +171,18 @@ def maximum_negative(self) -> 'AnyAngle':
```
</details>
- #### `@property`
- #### *def* `sin(self)`
### `@property`
### *def* `sin(self) -> float`
正弦值。
返回:
正弦值
- 正弦值
- #
<details>
<summary>源码</summary>
@ -198,18 +198,18 @@ def sin(self) -> float:
```
</details>
- #### `@property`
- #### *def* `cos(self)`
### `@property`
### *def* `cos(self) -> float`
余弦值。
返回:
余弦值
- 余弦值
- #
<details>
<summary>源码</summary>
@ -225,18 +225,18 @@ def cos(self) -> float:
```
</details>
- #### `@property`
- #### *def* `tan(self)`
### `@property`
### *def* `tan(self) -> float`
正切值。
返回:
正切值
- 正切值
- #
<details>
<summary>源码</summary>
@ -252,18 +252,18 @@ def tan(self) -> float:
```
</details>
- #### `@property`
- #### *def* `cot(self)`
### `@property`
### *def* `cot(self) -> float`
余切值。
返回:
余切值
- 余切值
- #
<details>
<summary>源码</summary>
@ -279,18 +279,18 @@ def cot(self) -> float:
```
</details>
- #### `@property`
- #### *def* `sec(self)`
### `@property`
### *def* `sec(self) -> float`
正割值。
返回:
正割值
- 正割值
- #
<details>
<summary>源码</summary>
@ -306,18 +306,18 @@ def sec(self) -> float:
```
</details>
- #### `@property`
- #### *def* `csc(self)`
### `@property`
### *def* `csc(self) -> float`
余割值。
返回:
余割值
- 余割值
- #
<details>
<summary>源码</summary>
@ -333,9 +333,9 @@ def csc(self) -> float:
```
</details>
- #### *def* `__add__(self, other: 'AnyAngle')`
### *def* `__add__(self, other: 'AnyAngle') -> 'AnyAngle'`
- #
<details>
<summary>源码</summary>
@ -345,9 +345,9 @@ def __add__(self, other: 'AnyAngle') -> 'AnyAngle':
```
</details>
- #### *def* `__eq__(self, other)`
### *def* `__eq__(self, other)`
- #
<details>
<summary>源码</summary>
@ -357,9 +357,9 @@ def __eq__(self, other):
```
</details>
- #### *def* `__sub__(self, other: 'AnyAngle')`
### *def* `__sub__(self, other: 'AnyAngle') -> 'AnyAngle'`
- #
<details>
<summary>源码</summary>
@ -369,9 +369,9 @@ def __sub__(self, other: 'AnyAngle') -> 'AnyAngle':
```
</details>
- #### *def* `__mul__(self, other: float)`
### *def* `__mul__(self, other: float) -> 'AnyAngle'`
- #
<details>
<summary>源码</summary>
@ -381,9 +381,9 @@ def __mul__(self, other: float) -> 'AnyAngle':
```
</details>
- #### *def* `__repr__(self)`
### *def* `__repr__(self)`
- #
<details>
<summary>源码</summary>
@ -393,9 +393,9 @@ def __repr__(self):
```
</details>
- #### *def* `__str__(self)`
### *def* `__str__(self)`
- #
<details>
<summary>源码</summary>
@ -405,10 +405,10 @@ def __str__(self):
```
</details>
- #### `@overload`
- #### *def* `__truediv__(self, other: float)`
### `@overload`
### *def* `__truediv__(self, other: float) -> 'AnyAngle'`
- #
<details>
<summary>源码</summary>
@ -419,10 +419,10 @@ def __truediv__(self, other: float) -> 'AnyAngle':
```
</details>
- #### `@overload`
- #### *def* `__truediv__(self, other: 'AnyAngle')`
### `@overload`
### *def* `__truediv__(self, other: 'AnyAngle') -> float`
- #
<details>
<summary>源码</summary>
@ -433,9 +433,9 @@ def __truediv__(self, other: 'AnyAngle') -> float:
```
</details>
- #### *def* `__truediv__(self, other)`
### *def* `__truediv__(self, other)`
- #
<details>
<summary>源码</summary>

View File

@ -1,20 +1,18 @@
---
title: mbcp.mp_math.equation
---
### ***var*** `result_func = get_partial_derivative_func(result_func, v, epsilon)`
### *def* `get_partial_derivative_func(func: MultiVarsFunc = EPSILON)`
### *def* `get_partial_derivative_func(func: MultiVarsFunc = EPSILON) -> MultiVarsFunc`
求N元函数一阶偏导函数。这玩意不太稳定慎用。
参数:
func: 函数
- func: 函数
var: 变量位置,可为整数(一阶偏导)或整数元组(高阶偏导)
- var: 变量位置,可为整数(一阶偏导)或整数元组(高阶偏导)
epsilon: 偏移量
- epsilon: 偏移量
@ -56,7 +54,7 @@ def get_partial_derivative_func(func: MultiVarsFunc, var: int | tuple[int, ...],
```
</details>
### *def* `partial_derivative_func()`
### *def* `partial_derivative_func() -> Var`
<details>
@ -72,7 +70,7 @@ def partial_derivative_func(*args: Var) -> Var:
```
</details>
### *def* `high_order_partial_derivative_func()`
### *def* `high_order_partial_derivative_func() -> Var`
<details>
@ -89,21 +87,21 @@ def high_order_partial_derivative_func(*args: Var) -> Var:
### ***class*** `CurveEquation`
- #### *def* `__init__(self, x_func: OneVarFunc, y_func: OneVarFunc, z_func: OneVarFunc)`
### *def* `__init__(self, x_func: OneVarFunc, y_func: OneVarFunc, z_func: OneVarFunc)`
曲线方程。
参数:
x_func: x函数
- x_func: x函数
y_func: y函数
- y_func: y函数
- z_func: z函数
z_func: z函数
- #
<details>
<summary>源码</summary>
@ -122,19 +120,19 @@ def __init__(self, x_func: OneVarFunc, y_func: OneVarFunc, z_func: OneVarFunc):
```
</details>
- #### *def* `__call__(self)`
### *def* `__call__(self) -> Point3 | tuple[Point3, ...]`
计算曲线上的点。
参数:
*t:
- *t:
- 参数:
参数:
- #
<details>
<summary>源码</summary>
@ -155,9 +153,9 @@ def __call__(self, *t: Var) -> Point3 | tuple[Point3, ...]:
```
</details>
- #### *def* `__str__(self)`
### *def* `__str__(self)`
- #
<details>
<summary>源码</summary>
@ -167,3 +165,5 @@ def __str__(self):
```
</details>
### ***var*** `result_func = get_partial_derivative_func(result_func, v, epsilon)`

View File

@ -3,19 +3,19 @@ title: mbcp.mp_math.line
---
### ***class*** `Line3`
- #### *def* `__init__(self, point: 'Point3', direction: 'Vector3')`
### *def* `__init__(self, point: 'Point3', direction: 'Vector3')`
三维空间中的直线。由一个点和一个方向向量确定。
参数:
point: 直线上的一点
- point: 直线上的一点
- direction: 直线的方向向量
direction: 直线的方向向量
- #
<details>
<summary>源码</summary>
@ -32,19 +32,19 @@ def __init__(self, point: 'Point3', direction: 'Vector3'):
```
</details>
- #### *def* `approx(self, other: 'Line3', epsilon: float = APPROX)`
### *def* `approx(self, other: 'Line3', epsilon: float = APPROX) -> bool`
判断两条直线是否近似相等。
参数:
other: 另一条直线
- other: 另一条直线
- epsilon: 误差
epsilon: 误差
- #
<details>
<summary>源码</summary>
@ -62,17 +62,17 @@ def approx(self, other: 'Line3', epsilon: float=APPROX) -> bool:
```
</details>
- #### *def* `cal_angle(self, other: 'Line3')`
### *def* `cal_angle(self, other: 'Line3') -> 'AnyAngle'`
计算直线和直线之间的夹角。
参数:
other: 另一条直线
- other: 另一条直线
- #
<details>
<summary>源码</summary>
@ -91,17 +91,17 @@ def cal_angle(self, other: 'Line3') -> 'AnyAngle':
```
</details>
- #### *def* `cal_distance(self, other: 'Line3 | Point3')`
### *def* `cal_distance(self, other: 'Line3 | Point3') -> float`
计算直线和直线或点之间的距离。
参数:
other: 平行直线或点
- other: 平行直线或点
- #
<details>
<summary>源码</summary>
@ -133,17 +133,17 @@ def cal_distance(self, other: 'Line3 | Point3') -> float:
```
</details>
- #### *def* `cal_intersection(self, other: 'Line3')`
### *def* `cal_intersection(self, other: 'Line3') -> 'Point3'`
计算两条直线的交点。
参数:
other: 另一条直线
- other: 另一条直线
- #
<details>
<summary>源码</summary>
@ -167,17 +167,17 @@ def cal_intersection(self, other: 'Line3') -> 'Point3':
```
</details>
- #### *def* `cal_perpendicular(self, point: 'Point3')`
### *def* `cal_perpendicular(self, point: 'Point3') -> 'Line3'`
计算直线经过指定点p的垂线。
参数:
point: 指定点
- point: 指定点
- #
<details>
<summary>源码</summary>
@ -194,17 +194,17 @@ def cal_perpendicular(self, point: 'Point3') -> 'Line3':
```
</details>
- #### *def* `get_point(self, t: RealNumber)`
### *def* `get_point(self, t: RealNumber) -> 'Point3'`
获取直线上的点。同一条直线但起始点和方向向量不同则同一个t对应的点不同。
参数:
t: 参数t
- t: 参数t
- #
<details>
<summary>源码</summary>
@ -221,17 +221,17 @@ def get_point(self, t: RealNumber) -> 'Point3':
```
</details>
- #### *def* `get_parametric_equations(self)`
### *def* `get_parametric_equations(self) -> tuple[OneSingleVarFunc, OneSingleVarFunc, OneSingleVarFunc]`
获取直线的参数方程。
返回:
x(t), y(t), z(t)
- x(t), y(t), z(t)
- #
<details>
<summary>源码</summary>
@ -246,19 +246,19 @@ def get_parametric_equations(self) -> tuple[OneSingleVarFunc, OneSingleVarFunc,
```
</details>
- #### *def* `is_approx_parallel(self, other: 'Line3', epsilon: float = 1e-06)`
### *def* `is_approx_parallel(self, other: 'Line3', epsilon: float = 1e-06) -> bool`
判断两条直线是否近似平行。
参数:
other: 另一条直线
- other: 另一条直线
- epsilon: 误差
epsilon: 误差
- #
<details>
<summary>源码</summary>
@ -276,17 +276,17 @@ def is_approx_parallel(self, other: 'Line3', epsilon: float=1e-06) -> bool:
```
</details>
- #### *def* `is_parallel(self, other: 'Line3')`
### *def* `is_parallel(self, other: 'Line3') -> bool`
判断两条直线是否平行。
参数:
other: 另一条直线
- other: 另一条直线
- #
<details>
<summary>源码</summary>
@ -303,17 +303,17 @@ def is_parallel(self, other: 'Line3') -> bool:
```
</details>
- #### *def* `is_collinear(self, other: 'Line3')`
### *def* `is_collinear(self, other: 'Line3') -> bool`
判断两条直线是否共线。
参数:
other: 另一条直线
- other: 另一条直线
- #
<details>
<summary>源码</summary>
@ -330,17 +330,17 @@ def is_collinear(self, other: 'Line3') -> bool:
```
</details>
- #### *def* `is_point_on(self, point: 'Point3')`
### *def* `is_point_on(self, point: 'Point3') -> bool`
判断点是否在直线上。
参数:
point: 点
- point: 点
- #
<details>
<summary>源码</summary>
@ -357,7 +357,7 @@ def is_point_on(self, point: 'Point3') -> bool:
```
</details>
- #### *def* `is_coplanar(self, other: 'Line3')`
### *def* `is_coplanar(self, other: 'Line3') -> bool`
判断两条直线是否共面。
@ -365,10 +365,10 @@ def is_point_on(self, point: 'Point3') -> bool:
参数:
other: 另一条直线
- other: 另一条直线
- #
<details>
<summary>源码</summary>
@ -386,7 +386,7 @@ def is_coplanar(self, other: 'Line3') -> bool:
```
</details>
- #### *def* `simplify(self)`
### *def* `simplify(self)`
简化直线方程,等价相等。
@ -395,7 +395,7 @@ def is_coplanar(self, other: 'Line3') -> bool:
按照可行性一次对x y z 化 0 处理,并对向量单位化
- #
<details>
<summary>源码</summary>
@ -417,20 +417,20 @@ def simplify(self):
```
</details>
- #### `@classmethod`
- #### *def* `from_two_points(cls, p1: 'Point3', p2: 'Point3')`
### `@classmethod`
### *def* `from_two_points(cls, p1: 'Point3', p2: 'Point3') -> 'Line3'`
工厂函数 由两点构造直线。
参数:
p1: 点1
- p1: 点1
- p2: 点2
p2: 点2
- #
<details>
<summary>源码</summary>
@ -450,17 +450,17 @@ def from_two_points(cls, p1: 'Point3', p2: 'Point3') -> 'Line3':
```
</details>
- #### *def* `__and__(self, other: 'Line3')`
### *def* `__and__(self, other: 'Line3') -> 'Line3 | Point3 | None'`
计算两条直线点集合的交集。重合线返回自身平行线返回None交线返回交点。
参数:
other: 另一条直线
- other: 另一条直线
- #
<details>
<summary>源码</summary>
@ -482,7 +482,7 @@ def __and__(self, other: 'Line3') -> 'Line3 | Point3 | None':
```
</details>
- #### *def* `__eq__(self, other)`
### *def* `__eq__(self, other) -> bool`
判断两条直线是否等价。
@ -491,10 +491,10 @@ v1 // v2 ∧ (p1 - p2) // v1
参数:
other:
- other:
- #
<details>
<summary>源码</summary>
@ -514,13 +514,13 @@ def __eq__(self, other) -> bool:
```
</details>
- #### *def* `__str__(self)`
### *def* `__str__(self)`
- #
<details>
<summary>源码</summary>
@ -542,9 +542,9 @@ def __str__(self):
```
</details>
- #### *def* `__repr__(self)`
### *def* `__repr__(self)`
- #
<details>
<summary>源码</summary>

View File

@ -1,45 +1,25 @@
---
title: mbcp.mp_math.plane
---
### ***var*** `k = other.a / self.a`
### ***var*** `A = np.array([[self.b, self.c], [other.b, other.c]])`
### ***var*** `B = np.array([-self.d, -other.d])`
### ***var*** `v2 = l2.get_point(1) - l1.point`
### ***var*** `k = other.b / self.b`
### ***var*** `A = np.array([[self.a, self.c], [other.a, other.c]])`
### ***var*** `B = np.array([-self.d, -other.d])`
### ***var*** `k = other.c / self.c`
### ***var*** `A = np.array([[self.a, self.b], [other.a, other.b]])`
### ***var*** `B = np.array([-self.d, -other.d])`
### ***class*** `Plane3`
- #### *def* `__init__(self, a: float, b: float, c: float, d: float)`
### *def* `__init__(self, a: float, b: float, c: float, d: float)`
平面方程ax + by + cz + d = 0
参数:
a:
- a:
b:
- b:
c:
- c:
- d:
d:
- #
<details>
<summary>源码</summary>
@ -60,17 +40,17 @@ def __init__(self, a: float, b: float, c: float, d: float):
```
</details>
- #### *def* `approx(self, other: 'Plane3')`
### *def* `approx(self, other: 'Plane3') -> bool`
判断两个平面是否近似相等。
参数:
other:
- other:
- #
<details>
<summary>源码</summary>
@ -84,6 +64,7 @@ def approx(self, other: 'Plane3') -> bool:
Returns:
是否近似相等
"""
a = 3
if self.a != 0:
k = other.a / self.a
return approx(other.b, self.b * k) and approx(other.c, self.c * k) and approx(other.d, self.d * k)
@ -98,17 +79,17 @@ def approx(self, other: 'Plane3') -> bool:
```
</details>
- #### *def* `cal_angle(self, other: 'Line3 | Plane3')`
### *def* `cal_angle(self, other: 'Line3 | Plane3') -> 'AnyAngle'`
计算平面与平面之间的夹角。
参数:
other: 另一个平面
- other: 另一个平面
- #
<details>
<summary>源码</summary>
@ -132,17 +113,17 @@ def cal_angle(self, other: 'Line3 | Plane3') -> 'AnyAngle':
```
</details>
- #### *def* `cal_distance(self, other: 'Plane3 | Point3')`
### *def* `cal_distance(self, other: 'Plane3 | Point3') -> float`
计算平面与平面或点之间的距离。
参数:
other: 另一个平面或点
- other: 另一个平面或点
- #
<details>
<summary>源码</summary>
@ -166,17 +147,17 @@ def cal_distance(self, other: 'Plane3 | Point3') -> float:
```
</details>
- #### *def* `cal_intersection_line3(self, other: 'Plane3')`
### *def* `cal_intersection_line3(self, other: 'Plane3') -> 'Line3'`
计算两平面的交线。该方法有问题,待修复。
参数:
other: 另一个平面
- other: 另一个平面
- #
<details>
<summary>源码</summary>
@ -210,17 +191,17 @@ def cal_intersection_line3(self, other: 'Plane3') -> 'Line3':
```
</details>
- #### *def* `cal_intersection_point3(self, other: 'Line3')`
### *def* `cal_intersection_point3(self, other: 'Line3') -> 'Point3'`
计算平面与直线的交点。
参数:
other: 不与平面平行或在平面上的直线
- other: 不与平面平行或在平面上的直线
- #
<details>
<summary>源码</summary>
@ -243,17 +224,17 @@ def cal_intersection_point3(self, other: 'Line3') -> 'Point3':
```
</details>
- #### *def* `cal_parallel_plane3(self, point: 'Point3')`
### *def* `cal_parallel_plane3(self, point: 'Point3') -> 'Plane3'`
计算平行于该平面且过指定点的平面。
参数:
point: 指定点
- point: 指定点
- #
<details>
<summary>源码</summary>
@ -270,17 +251,17 @@ def cal_parallel_plane3(self, point: 'Point3') -> 'Plane3':
```
</details>
- #### *def* `is_parallel(self, other: 'Plane3')`
### *def* `is_parallel(self, other: 'Plane3') -> bool`
判断两个平面是否平行。
参数:
other: 另一个平面
- other: 另一个平面
- #
<details>
<summary>源码</summary>
@ -297,18 +278,18 @@ def is_parallel(self, other: 'Plane3') -> bool:
```
</details>
- #### `@property`
- #### *def* `normal(self)`
### `@property`
### *def* `normal(self) -> 'Vector3'`
平面的法向量。
返回:
法向量
- 法向量
- #
<details>
<summary>源码</summary>
@ -324,20 +305,20 @@ def normal(self) -> 'Vector3':
```
</details>
- #### `@classmethod`
- #### *def* `from_point_and_normal(cls, point: 'Point3', normal: 'Vector3')`
### `@classmethod`
### *def* `from_point_and_normal(cls, point: 'Point3', normal: 'Vector3') -> 'Plane3'`
工厂函数 由点和法向量构造平面(点法式构造)。
参数:
point: 平面上的一点
- point: 平面上的一点
- normal: 法向量
normal: 法向量
- #
<details>
<summary>源码</summary>
@ -358,22 +339,22 @@ def from_point_and_normal(cls, point: 'Point3', normal: 'Vector3') -> 'Plane3':
```
</details>
- #### `@classmethod`
- #### *def* `from_three_points(cls, p1: 'Point3', p2: 'Point3', p3: 'Point3')`
### `@classmethod`
### *def* `from_three_points(cls, p1: 'Point3', p2: 'Point3', p3: 'Point3') -> 'Plane3'`
工厂函数 由三点构造平面。
参数:
p1: 点1
- p1: 点1
p2: 点2
- p2: 点2
- p3: 点3
p3: 点3
- #
<details>
<summary>源码</summary>
@ -396,20 +377,20 @@ def from_three_points(cls, p1: 'Point3', p2: 'Point3', p3: 'Point3') -> 'Plane3'
```
</details>
- #### `@classmethod`
- #### *def* `from_two_lines(cls, l1: 'Line3', l2: 'Line3')`
### `@classmethod`
### *def* `from_two_lines(cls, l1: 'Line3', l2: 'Line3') -> 'Plane3'`
工厂函数 由两直线构造平面。
参数:
l1: 直线1
- l1: 直线1
- l2: 直线2
l2: 直线2
- #
<details>
<summary>源码</summary>
@ -432,20 +413,20 @@ def from_two_lines(cls, l1: 'Line3', l2: 'Line3') -> 'Plane3':
```
</details>
- #### `@classmethod`
- #### *def* `from_point_and_line(cls, point: 'Point3', line: 'Line3')`
### `@classmethod`
### *def* `from_point_and_line(cls, point: 'Point3', line: 'Line3') -> 'Plane3'`
工厂函数 由点和直线构造平面。
参数:
point: 面上一点
- point: 面上一点
- line: 面上直线,不包含点
line: 面上直线,不包含点
- #
<details>
<summary>源码</summary>
@ -464,9 +445,9 @@ def from_point_and_line(cls, point: 'Point3', line: 'Line3') -> 'Plane3':
```
</details>
- #### *def* `__repr__(self)`
### *def* `__repr__(self)`
- #
<details>
<summary>源码</summary>
@ -476,9 +457,9 @@ def __repr__(self):
```
</details>
- #### *def* `__str__(self)`
### *def* `__str__(self)`
- #
<details>
<summary>源码</summary>
@ -497,10 +478,10 @@ def __str__(self):
```
</details>
- #### `@overload`
- #### *def* `__and__(self, other: 'Line3')`
### `@overload`
### *def* `__and__(self, other: 'Line3') -> 'Point3 | None'`
- #
<details>
<summary>源码</summary>
@ -511,10 +492,10 @@ def __and__(self, other: 'Line3') -> 'Point3 | None':
```
</details>
- #### `@overload`
- #### *def* `__and__(self, other: 'Plane3')`
### `@overload`
### *def* `__and__(self, other: 'Plane3') -> 'Line3 | None'`
- #
<details>
<summary>源码</summary>
@ -525,17 +506,17 @@ def __and__(self, other: 'Plane3') -> 'Line3 | None':
```
</details>
- #### *def* `__and__(self, other)`
### *def* `__and__(self, other)`
取两平面的交集(人话:交线)
参数:
other:
- other:
- #
<details>
<summary>源码</summary>
@ -561,9 +542,9 @@ def __and__(self, other):
```
</details>
- #### *def* `__eq__(self, other)`
### *def* `__eq__(self, other) -> bool`
- #
<details>
<summary>源码</summary>
@ -573,9 +554,9 @@ def __eq__(self, other) -> bool:
```
</details>
- #### *def* `__rand__(self, other: 'Line3')`
### *def* `__rand__(self, other: 'Line3') -> 'Point3'`
- #
<details>
<summary>源码</summary>
@ -585,3 +566,23 @@ def __rand__(self, other: 'Line3') -> 'Point3':
```
</details>
### ***var*** `k = other.a / self.a`
### ***var*** `A = np.array([[self.b, self.c], [other.b, other.c]])`
### ***var*** `B = np.array([-self.d, -other.d])`
### ***var*** `v2 = l2.get_point(1) - l1.point`
### ***var*** `k = other.b / self.b`
### ***var*** `A = np.array([[self.a, self.c], [other.a, other.c]])`
### ***var*** `B = np.array([-self.d, -other.d])`
### ***var*** `k = other.c / self.c`
### ***var*** `A = np.array([[self.a, self.b], [other.a, other.b]])`
### ***var*** `B = np.array([-self.d, -other.d])`

View File

@ -3,21 +3,21 @@ title: mbcp.mp_math.point
---
### ***class*** `Point3`
- #### *def* `__init__(self, x: float, y: float, z: float)`
### *def* `__init__(self, x: float, y: float, z: float)`
笛卡尔坐标系中的点。
参数:
x: x 坐标
- x: x 坐标
y: y 坐标
- y: y 坐标
- z: z 坐标
z: z 坐标
- #
<details>
<summary>源码</summary>
@ -36,19 +36,19 @@ def __init__(self, x: float, y: float, z: float):
```
</details>
- #### *def* `approx(self, other: 'Point3', epsilon: float = APPROX)`
### *def* `approx(self, other: 'Point3', epsilon: float = APPROX) -> bool`
判断两个点是否近似相等。
参数:
other:
- other:
- epsilon:
epsilon:
- #
<details>
<summary>源码</summary>
@ -67,9 +67,9 @@ def approx(self, other: 'Point3', epsilon: float=APPROX) -> bool:
```
</details>
- #### *def* `__str__(self)`
### *def* `__str__(self)`
- #
<details>
<summary>源码</summary>
@ -79,10 +79,10 @@ def __str__(self):
```
</details>
- #### `@overload`
- #### *def* `__add__(self, other: 'Vector3')`
### `@overload`
### *def* `__add__(self, other: 'Vector3') -> 'Point3'`
- #
<details>
<summary>源码</summary>
@ -93,10 +93,10 @@ def __add__(self, other: 'Vector3') -> 'Point3':
```
</details>
- #### `@overload`
- #### *def* `__add__(self, other: 'Point3')`
### `@overload`
### *def* `__add__(self, other: 'Point3') -> 'Point3'`
- #
<details>
<summary>源码</summary>
@ -107,7 +107,7 @@ def __add__(self, other: 'Point3') -> 'Point3':
```
</details>
- #### *def* `__add__(self, other)`
### *def* `__add__(self, other)`
P + V -> P
@ -115,10 +115,10 @@ P + P -> P
参数:
other:
- other:
- #
<details>
<summary>源码</summary>
@ -135,17 +135,17 @@ def __add__(self, other):
```
</details>
- #### *def* `__eq__(self, other)`
### *def* `__eq__(self, other)`
判断两个点是否相等。
参数:
other:
- other:
- #
<details>
<summary>源码</summary>
@ -161,3 +161,35 @@ def __eq__(self, other):
```
</details>
### *def* `__sub__(self, other: 'Point3') -> 'Vector3'`
P - P -> V
P - V -> P 已在 :class:`Vector3` 中实现
参数:
- other:
<details>
<summary>源码</summary>
```python
def __sub__(self, other: 'Point3') -> 'Vector3':
"""
P - P -> V
P - V -> P 已在 :class:`Vector3` 中实现
Args:
other:
Returns:
"""
from .vector import Vector3
return Vector3(self.x - other.x, self.y - other.y, self.z - other.z)
```
</details>

View File

@ -3,7 +3,7 @@ title: mbcp.mp_math.segment
---
### ***class*** `Segment3`
- #### *def* `__init__(self, p1: 'Point3', p2: 'Point3')`
### *def* `__init__(self, p1: 'Point3', p2: 'Point3')`
三维空间中的线段。
@ -11,7 +11,7 @@ title: mbcp.mp_math.segment
:param p2:
- #
<details>
<summary>源码</summary>
@ -33,9 +33,9 @@ def __init__(self, p1: 'Point3', p2: 'Point3'):
```
</details>
- #### *def* `__repr__(self)`
### *def* `__repr__(self)`
- #
<details>
<summary>源码</summary>
@ -45,9 +45,9 @@ def __repr__(self):
```
</details>
- #### *def* `__str__(self)`
### *def* `__str__(self)`
- #
<details>
<summary>源码</summary>

View File

@ -1,18 +1,18 @@
---
title: mbcp.mp_math.utils
---
### *def* `clamp()`
### *def* `clamp() -> float`
区间截断函数。
参数:
x:
- x:
min_:
- min_:
max_:
- max_:
@ -35,18 +35,18 @@ def clamp(x: float, min_: float, max_: float) -> float:
```
</details>
### *def* `approx(x: float = 0.0, y: float = APPROX)`
### *def* `approx(x: float = 0.0, y: float = APPROX) -> bool`
判断两个数是否近似相等。或包装一个实数用于判断是否近似于0。
参数:
x:
- x:
y:
- y:
epsilon:
- epsilon:
@ -69,16 +69,16 @@ def approx(x: float, y: float=0.0, epsilon: float=APPROX) -> bool:
```
</details>
### *def* `sign(x: float = False)`
### *def* `sign(x: float = False) -> str`
获取数的符号。
参数:
x: 数
- x: 数
only_neg: 是否只返回负数的符号
- only_neg: 是否只返回负数的符号
@ -103,7 +103,7 @@ def sign(x: float, only_neg: bool=False) -> str:
```
</details>
### *def* `sign_format(x: float = False)`
### *def* `sign_format(x: float = False) -> str`
格式化符号数
@ -113,9 +113,9 @@ def sign(x: float, only_neg: bool=False) -> str:
参数:
x: 数
- x: 数
only_neg: 是否只返回负数的符号
- only_neg: 是否只返回负数的符号
@ -145,9 +145,9 @@ def sign_format(x: float, only_neg: bool=False) -> str:
### ***class*** `Approx`
- #### *def* `__init__(self, value: RealNumber)`
### *def* `__init__(self, value: RealNumber)`
- #
<details>
<summary>源码</summary>
@ -157,9 +157,9 @@ def __init__(self, value: RealNumber):
```
</details>
- #### *def* `__eq__(self, other)`
### *def* `__eq__(self, other)`
- #
<details>
<summary>源码</summary>
@ -178,9 +178,9 @@ def __eq__(self, other):
```
</details>
- #### *def* `raise_type_error(self, other)`
### *def* `raise_type_error(self, other)`
- #
<details>
<summary>源码</summary>
@ -190,9 +190,9 @@ def raise_type_error(self, other):
```
</details>
- #### *def* `__ne__(self, other)`
### *def* `__ne__(self, other)`
- #
<details>
<summary>源码</summary>

View File

@ -1,31 +1,23 @@
---
title: mbcp.mp_math.vector
---
### ***var*** `zero_vector3 = Vector3(0, 0, 0)`
### ***var*** `x_axis = Vector3(1, 0, 0)`
### ***var*** `y_axis = Vector3(0, 1, 0)`
### ***var*** `z_axis = Vector3(0, 0, 1)`
### ***class*** `Vector3`
- #### *def* `__init__(self, x: float, y: float, z: float)`
### *def* `__init__(self, x: float, y: float, z: float)`
3维向量
参数:
x: x轴分量
- x: x轴分量
y: y轴分量
- y: y轴分量
- z: z轴分量
z: z轴分量
- #
<details>
<summary>源码</summary>
@ -44,19 +36,19 @@ def __init__(self, x: float, y: float, z: float):
```
</details>
- #### *def* `approx(self, other: 'Vector3', epsilon: float = APPROX)`
### *def* `approx(self, other: 'Vector3', epsilon: float = APPROX) -> bool`
判断两个向量是否近似相等。
参数:
other:
- other:
- epsilon:
epsilon:
- #
<details>
<summary>源码</summary>
@ -75,17 +67,17 @@ def approx(self, other: 'Vector3', epsilon: float=APPROX) -> bool:
```
</details>
- #### *def* `cal_angle(self, other: 'Vector3')`
### *def* `cal_angle(self, other: 'Vector3') -> 'AnyAngle'`
计算两个向量之间的夹角。
参数:
other: 另一个向量
- other: 另一个向量
- #
<details>
<summary>源码</summary>
@ -102,7 +94,7 @@ def cal_angle(self, other: 'Vector3') -> 'AnyAngle':
```
</details>
- #### *def* `cross(self, other: 'Vector3')`
### *def* `cross(self, other: 'Vector3') -> 'Vector3'`
向量积 叉乘v1 cross v2 -> v3
@ -112,7 +104,7 @@ def cal_angle(self, other: 'Vector3') -> 'AnyAngle':
- #
<details>
<summary>源码</summary>
@ -141,19 +133,19 @@ def cross(self, other: 'Vector3') -> 'Vector3':
```
</details>
- #### *def* `is_approx_parallel(self, other: 'Vector3', epsilon: float = APPROX)`
### *def* `is_approx_parallel(self, other: 'Vector3', epsilon: float = APPROX) -> bool`
判断两个向量是否近似平行。
参数:
other: 另一个向量
- other: 另一个向量
- epsilon: 允许的误差
epsilon: 允许的误差
- #
<details>
<summary>源码</summary>
@ -171,17 +163,17 @@ def is_approx_parallel(self, other: 'Vector3', epsilon: float=APPROX) -> bool:
```
</details>
- #### *def* `is_parallel(self, other: 'Vector3')`
### *def* `is_parallel(self, other: 'Vector3') -> bool`
判断两个向量是否平行。
参数:
other: 另一个向量
- other: 另一个向量
- #
<details>
<summary>源码</summary>
@ -198,7 +190,7 @@ def is_parallel(self, other: 'Vector3') -> bool:
```
</details>
- #### *def* `normalize(self)`
### *def* `normalize(self)`
将向量归一化。
@ -206,7 +198,7 @@ def is_parallel(self, other: 'Vector3') -> bool:
自体归一化,不返回值。
- #
<details>
<summary>源码</summary>
@ -224,14 +216,14 @@ def normalize(self):
```
</details>
- #### `@property`
- #### *def* `np_array(self)`
### `@property`
### *def* `np_array(self) -> 'np.ndarray'`
- #
<details>
<summary>源码</summary>
@ -246,18 +238,18 @@ def np_array(self) -> 'np.ndarray':
```
</details>
- #### `@property`
- #### *def* `length(self)`
### `@property`
### *def* `length(self) -> float`
向量的模。
返回:
-
- #
<details>
<summary>源码</summary>
@ -273,18 +265,18 @@ def length(self) -> float:
```
</details>
- #### `@property`
- #### *def* `unit(self)`
### `@property`
### *def* `unit(self) -> 'Vector3'`
获取该向量的单位向量。
返回:
单位向量
- 单位向量
- #
<details>
<summary>源码</summary>
@ -300,9 +292,9 @@ def unit(self) -> 'Vector3':
```
</details>
- #### *def* `__abs__(self)`
### *def* `__abs__(self)`
- #
<details>
<summary>源码</summary>
@ -312,10 +304,10 @@ def __abs__(self):
```
</details>
- #### `@overload`
- #### *def* `__add__(self, other: 'Vector3')`
### `@overload`
### *def* `__add__(self, other: 'Vector3') -> 'Vector3'`
- #
<details>
<summary>源码</summary>
@ -326,10 +318,10 @@ def __add__(self, other: 'Vector3') -> 'Vector3':
```
</details>
- #### `@overload`
- #### *def* `__add__(self, other: 'Point3')`
### `@overload`
### *def* `__add__(self, other: 'Point3') -> 'Point3'`
- #
<details>
<summary>源码</summary>
@ -340,7 +332,7 @@ def __add__(self, other: 'Point3') -> 'Point3':
```
</details>
- #### *def* `__add__(self, other)`
### *def* `__add__(self, other)`
V + P -> P
@ -349,10 +341,10 @@ V + V -> V
参数:
other:
- other:
- #
<details>
<summary>源码</summary>
@ -376,17 +368,17 @@ def __add__(self, other):
```
</details>
- #### *def* `__eq__(self, other)`
### *def* `__eq__(self, other)`
判断两个向量是否相等。
参数:
other:
- other:
- #
<details>
<summary>源码</summary>
@ -403,7 +395,7 @@ def __eq__(self, other):
```
</details>
- #### *def* `__radd__(self, other: 'Point3')`
### *def* `__radd__(self, other: 'Point3') -> 'Point3'`
P + V -> P
@ -413,7 +405,7 @@ P + V -> P
:return:
- #
<details>
<summary>源码</summary>
@ -430,10 +422,10 @@ def __radd__(self, other: 'Point3') -> 'Point3':
```
</details>
- #### `@overload`
- #### *def* `__sub__(self, other: 'Vector3')`
### `@overload`
### *def* `__sub__(self, other: 'Vector3') -> 'Vector3'`
- #
<details>
<summary>源码</summary>
@ -444,10 +436,10 @@ def __sub__(self, other: 'Vector3') -> 'Vector3':
```
</details>
- #### `@overload`
- #### *def* `__sub__(self, other: 'Point3')`
### `@overload`
### *def* `__sub__(self, other: 'Point3') -> 'Point3'`
- #
<details>
<summary>源码</summary>
@ -458,7 +450,7 @@ def __sub__(self, other: 'Point3') -> 'Point3':
```
</details>
- #### *def* `__sub__(self, other)`
### *def* `__sub__(self, other)`
V - P -> P
@ -467,10 +459,10 @@ V - V -> V
参数:
other:
- other:
- #
<details>
<summary>源码</summary>
@ -493,17 +485,17 @@ def __sub__(self, other):
```
</details>
- #### *def* `__rsub__(self, other: 'Point3')`
### *def* `__rsub__(self, other: 'Point3')`
P - V -> P
参数:
other:
- other:
- #
<details>
<summary>源码</summary>
@ -523,10 +515,10 @@ def __rsub__(self, other: 'Point3'):
```
</details>
- #### `@overload`
- #### *def* `__mul__(self, other: 'Vector3')`
### `@overload`
### *def* `__mul__(self, other: 'Vector3') -> 'Vector3'`
- #
<details>
<summary>源码</summary>
@ -537,10 +529,10 @@ def __mul__(self, other: 'Vector3') -> 'Vector3':
```
</details>
- #### `@overload`
- #### *def* `__mul__(self, other: RealNumber)`
### `@overload`
### *def* `__mul__(self, other: RealNumber) -> 'Vector3'`
- #
<details>
<summary>源码</summary>
@ -551,17 +543,17 @@ def __mul__(self, other: RealNumber) -> 'Vector3':
```
</details>
- #### *def* `__mul__(self, other: 'int | float | Vector3')`
### *def* `__mul__(self, other: 'int | float | Vector3') -> 'Vector3'`
数组运算 非点乘。点乘使用@叉乘使用cross。
参数:
other:
- other:
- #
<details>
<summary>源码</summary>
@ -583,9 +575,9 @@ def __mul__(self, other: 'int | float | Vector3') -> 'Vector3':
```
</details>
- #### *def* `__rmul__(self, other: 'RealNumber')`
### *def* `__rmul__(self, other: 'RealNumber') -> 'Vector3'`
- #
<details>
<summary>源码</summary>
@ -595,17 +587,17 @@ def __rmul__(self, other: 'RealNumber') -> 'Vector3':
```
</details>
- #### *def* `__matmul__(self, other: 'Vector3')`
### *def* `__matmul__(self, other: 'Vector3') -> 'RealNumber'`
点乘。
参数:
other:
- other:
- #
<details>
<summary>源码</summary>
@ -621,9 +613,9 @@ def __matmul__(self, other: 'Vector3') -> 'RealNumber':
```
</details>
- #### *def* `__truediv__(self, other: RealNumber)`
### *def* `__truediv__(self, other: RealNumber) -> 'Vector3'`
- #
<details>
<summary>源码</summary>
@ -633,9 +625,9 @@ def __truediv__(self, other: RealNumber) -> 'Vector3':
```
</details>
- #### *def* `__neg__(self)`
### *def* `__neg__(self)`
- #
<details>
<summary>源码</summary>
@ -645,9 +637,9 @@ def __neg__(self):
```
</details>
- #### *def* `__repr__(self)`
### *def* `__repr__(self)`
- #
<details>
<summary>源码</summary>
@ -657,9 +649,9 @@ def __repr__(self):
```
</details>
- #### *def* `__str__(self)`
### *def* `__str__(self)`
- #
<details>
<summary>源码</summary>
@ -669,3 +661,11 @@ def __str__(self):
```
</details>
### ***var*** `zero_vector3 = Vector3(0, 0, 0)`
### ***var*** `x_axis = Vector3(1, 0, 0)`
### ***var*** `y_axis = Vector3(0, 1, 0)`
### ***var*** `z_axis = Vector3(0, 0, 1)`

View File

@ -3,20 +3,20 @@ title: mbcp.presets.model
---
### ***class*** `GeometricModels`
- #### `@staticmethod`
- #### *def* `sphere(radius: float, density: float)`
### `@staticmethod`
### *def* `sphere(radius: float, density: float)`
生成球体上的点集。
参数:
radius:
- radius:
- density:
density:
- #
<details>
<summary>源码</summary>