Add project_ortho() function and tests
This commit is contained in:
parent
7e0c77642d
commit
528cd9ff7a
BIN
matrixmania/__pycache__/__init__.cpython-312.pyc
Normal file
BIN
matrixmania/__pycache__/__init__.cpython-312.pyc
Normal file
Binary file not shown.
BIN
matrixmania/__pycache__/compute.cpython-312.pyc
Normal file
BIN
matrixmania/__pycache__/compute.cpython-312.pyc
Normal file
Binary file not shown.
@ -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()
|
||||
|
||||
|
||||
BIN
tests/__pycache__/test_matmul.cpython-312-pytest-8.4.2.pyc
Normal file
BIN
tests/__pycache__/test_matmul.cpython-312-pytest-8.4.2.pyc
Normal file
Binary file not shown.
BIN
tests/__pycache__/test_projection.cpython-312-pytest-8.4.2.pyc
Normal file
BIN
tests/__pycache__/test_projection.cpython-312-pytest-8.4.2.pyc
Normal file
Binary file not shown.
BIN
tests/__pycache__/test_rot.cpython-312-pytest-8.4.2.pyc
Normal file
BIN
tests/__pycache__/test_rot.cpython-312-pytest-8.4.2.pyc
Normal file
Binary file not shown.
BIN
tests/__pycache__/test_rot3D.cpython-312-pytest-8.4.2.pyc
Normal file
BIN
tests/__pycache__/test_rot3D.cpython-312-pytest-8.4.2.pyc
Normal file
Binary file not shown.
BIN
tests/__pycache__/test_transpose.cpython-312-pytest-8.4.2.pyc
Normal file
BIN
tests/__pycache__/test_transpose.cpython-312-pytest-8.4.2.pyc
Normal file
Binary file not shown.
14
tests/test_projection.py
Normal file
14
tests/test_projection.py
Normal file
@ -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
|
||||
Loading…
x
Reference in New Issue
Block a user