Add project_ortho() function and tests
This commit is contained in:
Binary file not shown.
Binary file not shown.
+13
-1
@@ -1,6 +1,7 @@
|
||||
from typing import List
|
||||
import math
|
||||
from tabulate import tabulate
|
||||
from typing import Tuple
|
||||
|
||||
def matmul(mat1: List[List[int]], mat2: List[List[int]]) -> List[List[int]]:
|
||||
"""
|
||||
@@ -119,6 +120,18 @@ def rot_3D(angle: float, axis: str) -> List[List[float]]:
|
||||
else:
|
||||
raise ValueError("Axis must be 'x', 'y', or 'z'.")
|
||||
|
||||
def project_ortho(point: Tuple[float, float, float], scale: float = 1) -> Tuple[float, float]:
|
||||
"""
|
||||
Retruns a 2d point with optional scaling
|
||||
|
||||
ignores the z axis and if scaling needed scales the 2d point
|
||||
|
||||
:param point: Coordinates of a 3d point
|
||||
:param scale: scaling factor (else 1)
|
||||
:return: A 2d point
|
||||
"""
|
||||
return scale * point[0], scale * point[1]
|
||||
|
||||
|
||||
def main():
|
||||
# Test matrix multiplication
|
||||
@@ -150,7 +163,6 @@ def main():
|
||||
print("Matrix A:")
|
||||
print(tabulate(matrix_a))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,14 @@
|
||||
from matrixmania.compute import project_ortho
|
||||
|
||||
def test_project_ortho_no_scale():
|
||||
point = (1.0, 2.0, 3.0)
|
||||
result = project_ortho(point)
|
||||
expected = (1.0, 2.0)
|
||||
assert result == expected
|
||||
|
||||
|
||||
def test_project_ortho_with_scale():
|
||||
point = (1.0, 2.0, 3.0)
|
||||
result = project_ortho(point, scale=100)
|
||||
expected = (100.0, 200.0)
|
||||
assert result == expected
|
||||
Reference in New Issue
Block a user