ordnerstruktur hinzugefügt

This commit is contained in:
rapplu93184 committed 2026-10-20 17:17:32 +02:00
1 parent 9c0a02b425
commit cbbe92c5ee
4 files changed
+56

No files matched your search

File renamed without changes.
+56
View File
@@ -98,6 +98,62 @@ def rot_2D(m: Matrix | float) -> Matrix:
return [[m[row][col] for row in reversed(range(rows))] for col in range(cols)] return [[m[row][col] for row in reversed(range(rows))] for col in range(cols)]
def rot_3D(angle: float, axis: str) -> list[list[float]]:
"""Gibt die Rotationsmatrix für eine Drehung um eine Achse im 3D-Raum zurück.
Die Drehung erfolgt im rechtshändigen Koordinatensystem um den Winkel
``angle`` (in Bogenmaß) um die angegebene Achse.
Formeln (rechtshändiges Koordinatensystem):
Rotation um x-Achse:
[[1, 0, 0],
[0, cos(a), -sin(a)],
[0, sin(a), cos(a)]]
Rotation um y-Achse:
[[ cos(a), 0, sin(a)],
[ 0, 1, 0],
[-sin(a), 0, cos(a)]]
Rotation um z-Achse:
[[cos(a), -sin(a), 0],
[sin(a), cos(a), 0],
[0, 0, 1]]
Args:
angle: Drehwinkel in Bogenmaß.
axis: Drehachse, muss ``'x'``, ``'y'`` oder ``'z'`` sein.
Returns:
3x3-Rotationsmatrix.
Raises:
ValueError: Wenn ``axis`` kein gültiger Achsenwert ist.
"""
theta = float(angle)
c = math.cos(theta)
s = math.sin(theta)
if axis == "x":
return [
[1.0, 0.0, 0.0],
[0.0, c, -s],
[0.0, s, c],
]
if axis == "y":
return [
[c, 0.0, s],
[0.0, 1.0, 0.0],
[-s, 0.0, c],
]
if axis == "z":
return [
[c, -s, 0.0],
[s, c, 0.0],
[0.0, 0.0, 1.0],
]
raise ValueError("Achse muss 'x', 'y' oder 'z' sein.")
View File
Whitespace-only changes.
View File
Whitespace-only changes.