new: project_ortho
This commit is contained in:
1 parent
0aa2468d19
commit
c5d47760ec
2 files changed
+20
-2
No files matched your search
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
from .compute import matmul, rot_2D, rot_3D, transpose
|
from .compute import matmul, project_ortho, rot_2D, rot_3D, transpose
|
||||||
|
|
||||||
__all__ = ["matmul", "rot_2D", "rot_3D", "transpose"]
|
__all__ = ["matmul", "project_ortho", "rot_2D", "rot_3D", "transpose"]
|
||||||
+18
@@ -95,6 +95,24 @@ def rot_3D(angle: float, axis: str) -> list[list[float]]:
|
|||||||
raise ValueError("axis must be 'x', 'y', or 'z'")
|
raise ValueError("axis must be 'x', 'y', or 'z'")
|
||||||
|
|
||||||
|
|
||||||
|
def project_ortho(
|
||||||
|
point: tuple[float, float, float], scale: float = 1
|
||||||
|
) -> tuple[float, float]:
|
||||||
|
"""Project a 3D point onto the xy-plane and apply a scale factor.
|
||||||
|
|
||||||
|
The z-coordinate is ignored. The returned x- and y-coordinates are each
|
||||||
|
multiplied by ``scale``.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
point: The 3D point as an (x, y, z) tuple.
|
||||||
|
scale: The scale factor to apply to x and y.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
The scaled 2D point as an (x, y) tuple.
|
||||||
|
"""
|
||||||
|
return point[0] * scale, point[1] * scale
|
||||||
|
|
||||||
|
|
||||||
def _validate_matrix(matrix: list[list[float]], name: str) -> None:
|
def _validate_matrix(matrix: list[list[float]], name: str) -> None:
|
||||||
"""Raise ValueError unless matrix is non-empty and rectangular."""
|
"""Raise ValueError unless matrix is non-empty and rectangular."""
|
||||||
if not matrix:
|
if not matrix:
|
||||||
|
|||||||
Reference in new issue
Block a user