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

# ----------------------------
# 1. Projektstruktur / Namespace
# ----------------------------
Namespace: _______________________________________________

Ziel: Saubere Trennung der Bibliothek, Vermeidung von Namenskonflikten.

Beispiel:
namespace Matrix3D {
    // Funktionen, ggf Klasse(n)
}

# ----------------------------
# 2. Datenstrukturen / Klassen
# ----------------------------
Listen Sie die Klassen oder Structs auf, die verwendet werden:

| Name   | Typ                                      | Beschreibung |
|--------|------------------------------------------|--------------|
| Vec3   | struct Vec3                              | 3D-Vektor (x, y, z) |
| Mat4   | std::array<std::array<double,4>,4>       | 4x4-Matrix (homogen) |
| ______ | ________ | ___________________ |
| ______ | ________ | ___________________ |

# ----------------------------
# 3. Operatoren / Templates
# ----------------------------
Welche Operatoren oder Templates sollen definiert werden?

- Templates für unterschiedliche Datentypen? ☐ Ja ☐ Nein
- Operatoren:
    - Mat4 * Mat4
    - Mat4 * Vec3

# ----------------------------
# 4. Funktionen / Schnittstellen
# ----------------------------
Liste der Funktionen mit Eingabe/Ausgabe und kurzer Beschreibung:

| Funktion      | Eingabe                            | Ausgabe               | Kurzbeschreibung                       |
|---------------|------------------------------------|-----------------------|----------------------------------------|
| matmul        | Mat4 A, Mat4 B                     | Mat4                  | Matrixmultiplikation 4x4               |
| translate     | Vec3 pos                           | Mat4                  | Verschiebungstransformation            |
| rot3D         | double angle_deg, char axis        | Mat4                  | Rotation um Achse x/y/z                |
| identity (optional)| ---                           | Mat4                  | Identitätsmatrix                       |
| _____________ | __________________________________ | ____________________  | ______________________________         |

# ----------------------------
# 5. Designentscheidungen / Hinweise
# ----------------------------
- Rückgabe der Matrizen per Wert oder Referenz? ___________
- Verwendung von std::array oder std::vector? ___________
- Homogene Koordinaten für Translation / Rotation (4x4)? ☐ Ja ☐ Nein
- Weitere Designüberlegungen: ___________________________

# ----------------------------
# 6. Deliverables / Milestones
# ----------------------------
- design.txt fertig und im Branch architect committed
- Übergabe an Entwickler für Implementierung

========================================================
Hinweis:
- Dieses Dokument dient als Grundlage für die Implementierung.
- Alle Designentscheidungen sollen klar nachvollziehbar sein.
========================================================
