Compare commits
2 Commits
7e0c77642d
...
922ee7739e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
922ee7739e | ||
|
|
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
|
from typing import List
|
||||||
import math
|
import math
|
||||||
from tabulate import tabulate
|
from tabulate import tabulate
|
||||||
|
from typing import Tuple
|
||||||
|
|
||||||
def matmul(mat1: List[List[int]], mat2: List[List[int]]) -> List[List[int]]:
|
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:
|
else:
|
||||||
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]:
|
||||||
|
"""
|
||||||
|
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():
|
def main():
|
||||||
# Test matrix multiplication
|
# Test matrix multiplication
|
||||||
@ -150,7 +163,6 @@ def main():
|
|||||||
print("Matrix A:")
|
print("Matrix A:")
|
||||||
print(tabulate(matrix_a))
|
print(tabulate(matrix_a))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "matrixmania_shehibr"
|
name = "matrixmania_shehibr"
|
||||||
version = "0.2.0"
|
version = "0.3.0"
|
||||||
description = "MatrixMania: Simple linear algebra functions for teaching (matmul, transpose,rot_2D)."
|
description = "MatrixMania: Simple linear algebra functions for teaching (matmul, transpose,rot_2D)."
|
||||||
authors = [
|
authors = [
|
||||||
{ name="shehibr", email="shehibr98345@th-nuernberg.de" }
|
{ name="shehibr", email="shehibr98345@th-nuernberg.de" }
|
||||||
|
|||||||
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