|
@@ -5,4 +5,117 @@ label: linalg
|
|
|
|
|
|
|
|
Provide `mat3x3`, `vec2`, `vec3` and `vec4` types.
|
|
Provide `mat3x3`, `vec2`, `vec3` and `vec4` types.
|
|
|
|
|
|
|
|
-https://github.com/blueloveTH/pocketpy/blob/main/include/typings/linalg.pyi
|
|
|
|
|
|
|
+https://github.com/blueloveTH/pocketpy/blob/main/include/typings/linalg.pyi
|
|
|
|
|
+
|
|
|
|
|
+```python
|
|
|
|
|
+from typing import overload
|
|
|
|
|
+from c import _StructLike
|
|
|
|
|
+
|
|
|
|
|
+class vec2(_StructLike['vec2']):
|
|
|
|
|
+ x: float
|
|
|
|
|
+ y: float
|
|
|
|
|
+
|
|
|
|
|
+ def __init__(self, x: float, y: float) -> None: ...
|
|
|
|
|
+ def __add__(self, other: vec2) -> vec2: ...
|
|
|
|
|
+ def __sub__(self, other: vec2) -> vec2: ...
|
|
|
|
|
+ def __mul__(self, other: float) -> vec2: ...
|
|
|
|
|
+ def __truediv__(self, other: float) -> vec2: ...
|
|
|
|
|
+ def dot(self, other: vec2) -> float: ...
|
|
|
|
|
+ def cross(self, other: vec2) -> float: ...
|
|
|
|
|
+ def length(self) -> float: ...
|
|
|
|
|
+ def length_squared(self) -> float: ...
|
|
|
|
|
+ def normalize(self) -> vec2: ...
|
|
|
|
|
+ def rotate(self, radians: float) -> vec2: ...
|
|
|
|
|
+ def rotate_(self, radians: float) -> None: ...
|
|
|
|
|
+
|
|
|
|
|
+class vec3(_StructLike['vec3']):
|
|
|
|
|
+ x: float
|
|
|
|
|
+ y: float
|
|
|
|
|
+ z: float
|
|
|
|
|
+
|
|
|
|
|
+ def __init__(self, x: float, y: float, z: float) -> None: ...
|
|
|
|
|
+ def __add__(self, other: vec3) -> vec3: ...
|
|
|
|
|
+ def __sub__(self, other: vec3) -> vec3: ...
|
|
|
|
|
+ def __mul__(self, other: float) -> vec3: ...
|
|
|
|
|
+ def __truediv__(self, other: float) -> vec3: ...
|
|
|
|
|
+ def dot(self, other: vec3) -> float: ...
|
|
|
|
|
+ def cross(self, other: vec3) -> float: ...
|
|
|
|
|
+ def length(self) -> float: ...
|
|
|
|
|
+ def length_squared(self) -> float: ...
|
|
|
|
|
+ def normalize(self) -> vec3: ...
|
|
|
|
|
+
|
|
|
|
|
+class vec4(_StructLike['vec4']):
|
|
|
|
|
+ x: float
|
|
|
|
|
+ y: float
|
|
|
|
|
+ z: float
|
|
|
|
|
+ w: float
|
|
|
|
|
+
|
|
|
|
|
+ def __init__(self, x: float, y: float, z: float, w: float) -> None: ...
|
|
|
|
|
+ def __add__(self, other: vec4) -> vec4: ...
|
|
|
|
|
+ def __sub__(self, other: vec4) -> vec4: ...
|
|
|
|
|
+ def __mul__(self, other: float) -> vec4: ...
|
|
|
|
|
+ def __truediv__(self, other: float) -> vec4: ...
|
|
|
|
|
+ def dot(self, other: vec4) -> float: ...
|
|
|
|
|
+ def length(self) -> float: ...
|
|
|
|
|
+ def length_squared(self) -> float: ...
|
|
|
|
|
+ def normalize(self) -> vec4: ...
|
|
|
|
|
+
|
|
|
|
|
+class mat3x3(_StructLike['mat3x3']):
|
|
|
|
|
+ _11: float
|
|
|
|
|
+ _12: float
|
|
|
|
|
+ _13: float
|
|
|
|
|
+ _21: float
|
|
|
|
|
+ _22: float
|
|
|
|
|
+ _23: float
|
|
|
|
|
+ _31: float
|
|
|
|
|
+ _32: float
|
|
|
|
|
+ _33: float
|
|
|
|
|
+
|
|
|
|
|
+ @overload
|
|
|
|
|
+ def __init__(self) -> None: ...
|
|
|
|
|
+ @overload
|
|
|
|
|
+ def __init__(self, _11, _12, _13, _21, _22, _23, _31, _32, _33) -> None: ...
|
|
|
|
|
+ @overload
|
|
|
|
|
+ def __init__(self, a: list[list]): ...
|
|
|
|
|
+
|
|
|
|
|
+ def set_zeros(self) -> None: ...
|
|
|
|
|
+ def set_ones(self) -> None: ...
|
|
|
|
|
+ def set_identity(self) -> None: ...
|
|
|
|
|
+
|
|
|
|
|
+ def determinant(self) -> float: ...
|
|
|
|
|
+ def transpose(self) -> mat3x3: ...
|
|
|
|
|
+
|
|
|
|
|
+ def __getitem__(self, index: tuple[int, int]) -> float: ...
|
|
|
|
|
+ def __setitem__(self, index: tuple[int, int], value: float) -> None: ...
|
|
|
|
|
+ def __add__(self, other: mat3x3) -> mat3x3: ...
|
|
|
|
|
+ def __sub__(self, other: mat3x3) -> mat3x3: ...
|
|
|
|
|
+ def __mul__(self, other: float) -> mat3x3: ...
|
|
|
|
|
+ def __truediv__(self, other: float) -> mat3x3: ...
|
|
|
|
|
+
|
|
|
|
|
+ def __invert__(self) -> mat3x3: ...
|
|
|
|
|
+ @overload
|
|
|
|
|
+ def __matmul__(self, other: mat3x3) -> mat3x3: ...
|
|
|
|
|
+ @overload
|
|
|
|
|
+ def __matmul__(self, other: vec3) -> vec3: ...
|
|
|
|
|
+
|
|
|
|
|
+ @staticmethod
|
|
|
|
|
+ def zeros() -> mat3x3: ...
|
|
|
|
|
+ @staticmethod
|
|
|
|
|
+ def ones() -> mat3x3: ...
|
|
|
|
|
+ @staticmethod
|
|
|
|
|
+ def identity() -> mat3x3: ...
|
|
|
|
|
+
|
|
|
|
|
+ # affine transformations
|
|
|
|
|
+ @staticmethod
|
|
|
|
|
+ def trs(t: vec2, r: float, s: vec2) -> mat3x3: ...
|
|
|
|
|
+
|
|
|
|
|
+ def is_affine(self) -> bool: ...
|
|
|
|
|
+
|
|
|
|
|
+ def _t(self) -> vec2: ...
|
|
|
|
|
+ def _r(self) -> float: ...
|
|
|
|
|
+ def _s(self) -> vec2: ...
|
|
|
|
|
+
|
|
|
|
|
+ def transform_point(self, p: vec2) -> vec2: ...
|
|
|
|
|
+ def transform_vector(self, v: vec2) -> vec2: ...
|
|
|
|
|
+
|
|
|
|
|
+```
|