========================================================
Projekt: gamematrix (C++ Library)
Rolle: Tester
Datei: tests.txt
Datum: ____________________
Team: ____________________
========================================================

# ----------------------------
# 1. Testplan Übersicht
# ----------------------------
Ziel: Überprüfung der Funktionen matmul(), translate(), rot3D().
Hinweise:
- Numerik: Vergleiche mit EPS = 1e-6
- Winkelmaß: rot3D erwartet Grad (90/180/270). (Anpassen, falls Implementierung Radiant nutzt.)
- Homogene Koordinate: Beim Anwenden von Mat4 auf Vec3 gilt w = 1.

| Funktion      | Testfall                          | Eingabe / Setup                                                                 | Erwartetes Ergebnis / Prüfung                              | Bemerkung                          |
|---------------|-----------------------------------|----------------------------------------------------------------------------------|-------------------------------------------------------------|------------------------------------|
| matmul        | Identity * Identity               | A = I4, B = I4                                                                   | C = I4                                                      | Basisfall                          |
| matmul        | Beispielmatrizen                  | A = [[1,2,0,0],[0,1,3,0],[0,0,1,4],[0,0,0,1]]; B = [[1,0,5,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]] | C = A*B (per Hand gerechnet); alle Einträge ≈ erwartet      | Handrechnung in Abschnitt 2        |
| matmul        | Assoziativität (Stichprobe)       | Zufällige A,B,C (kleine Ganzzahlen)                                              | (A*B)*C ≈ A*(B*C)                                           | Numerisch mit EPS                  |
| matmul        | Nicht-Kommutativität              | A = rotZ(90), B = rotX(90)                                                       | A*B ≠ B*A                                                   | Beispiel                          |
| translate     | Matrix-Struktur                   | t = (1,2,3)                                                                      | T = [[1,0,0,1],[0,1,0,2],[0,0,1,3],[0,0,0,1]]               | Letzte Spalte ist Translation      |
| translate     | Anwendung auf Vektor              | v = (4,5,6), T = translate(1,2,3)                                                | T·(v,1) → (5,7,9)                                           | Homogene 1 beachten               |
| rot3D         | Rotation Z 90°                    | v = (1,0,0), Rz = rot3D(90,'z')                                                  | Rz·v → (0,1,0)                                              | Rechtshändiges System              |
| rot3D         | Rotation X 180°                   | v = (0,1,0), Rx = rot3D(180,'x')                                                 | Rx·v → (0,-1,0)                                             |                                    |
| rot3D         | Rotation Y 270° (Korrektur)       | v = (1,0,0), Ry = rot3D(270,'y')                                                 | Ry·v → (0,0,1)                                              | Vorher war -1: korrigiert          |
| rot3D         | Inverse                            | R = rot3D(θ,axis)                                                                | R * rot3D(-θ,axis) ≈ I4                                     | Für θ ∈ {30, 90} testen            |
| rot3D+trans   | Reihenfolge-Effekt                 | Rz = rot3D(90,'z'), T = translate(1,0,0), p=(1,0,0)                              | Rz*T·p ≠ T*Rz·p (aber jeweils plausibles Ergebnis)          | Reihenfolge wichtig                |

# ----------------------------
# 2. Testdaten / Matrizen
# ----------------------------
- Identity I4 = diag(1,1,1,1)
- Beispielmatrizen für matmul:
  A = [[1,2,0,0],
       [0,1,3,0],
       [0,0,1,4],
       [0,0,0,1]]

  B = [[1,0,5,0],
       [0,1,0,0],
       [0,0,1,0],
       [0,0,0,1]]

  Erwartetes C = A*B =
      [[1,2,5,0],
       [0,1,3,0],
       [0,0,1,4],
       [0,0,0,1]]

- Translation t = (1,2,3) ⇒
  T = [[1,0,0,1],
       [0,1,0,2],
       [0,0,1,3],
       [0,0,0,1]]

- Beispielvektoren:
  v1=(1,0,0), v2=(0,1,0), v3=(4,5,6)

# ----------------------------
# 3. Abnahmekriterien
# ----------------------------
- Alle Unit-Tests erfolgreich (keine Abweichung > EPS)
- Einheitliches Winkelmaß eingehalten (Grad oder Radiant, dokumentiert)
- Keine Exceptions außer gewollt (z. B. ungültige Achse löst definierte Exception aus)
- Testbericht (Eingaben, erwartetes Ergebnis, Ist-Ergebnis, Status, Bemerkung) vollständig
========================================================
Hinweis:
- Diese Datei wird vom Tester gepflegt.
- Tester dokumentiert Input, Output, erwartetes Ergebnis und Erfolg/Fehler.
========================================================

