Compare commits

..

14 Commits

Author SHA1 Message Date
c7cc86197c Merge branch 'project_tests'
# Conflicts:
#	tests.txt
2025-11-17 15:40:25 +01:00
2f74c66844 Merge branch 'main' into project_tests
-tried to repair
-works with newer c-make versions

# Conflicts:
#	CMakeLists.txt
#	gamecube.cpp
#	gamecube.h
#	tests.cpp
2025-11-17 15:22:17 +01:00
d9abb1cfe9 Merge branch 'main' into project_tests
-tried to repair

# Conflicts:
#	CMakeLists.txt
#	gamecube.cpp
#	gamecube.h
#	tests.cpp
2025-11-17 15:03:57 +01:00
2a4fac44e5 Projektleiter: Dateien ins Hauptverzeichnis verschoben und aktualisiert 2025-11-17 14:56:41 +01:00
b7b87e7258 my own stuff 2025-11-17 14:40:52 +01:00
e019d4b975 Projektleiter: requirements und Gantt-Datei hinzugefügt 2025-11-17 14:40:40 +01:00
1e1e8fe93c Add .gitignore for macOS and IDE files 2025-11-04 16:27:36 +01:00
31e26a7a55 Add docs/tests.txt and initial tests.cpp for gamematrix 2025-11-04 16:04:27 +01:00
Iskender Abdullayev
a7ec47ca03 Add completed test plan to docs/tests.txt 2025-11-03 15:37:26 +01:00
Solmaz
979a7b6179 Merge branch 'main' of https://git.efi.th-nuernberg.de/gitea/huseynliso102169/getBeerreturntrue 2025-11-03 15:35:34 +01:00
88e29a1d3e CMakeLists.txt betriebssystemunabhängig machen 2025-10-29 16:35:15 +00:00
d9e5da49f2 testing 2025-10-20 14:56:09 +02:00
a1aa30a84c CMakeLists.txt aktualisiert 2025-10-20 12:00:17 +00:00
Anja Freudenreich
4c3bec0b4d initiate git repo 2025-10-12 16:59:58 +02:00
6 changed files with 163 additions and 17 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
.DS_Store
.idea/

View File

@ -3,6 +3,9 @@ project(Prog3B)
set(CMAKE_CXX_STANDARD 17)
# WICHTIG: wegen raylib + neuer CMake-Version
set(CMAKE_POLICY_VERSION_MINIMUM 3.5)
include(FetchContent)
FetchContent_Declare(
@ -20,4 +23,14 @@ add_executable(Prog3B
)
target_include_directories(Prog3B PRIVATE .)
target_link_libraries(Prog3B raylib)
target_link_libraries(Prog3B raylib)
# macOS-Frameworks nicht vergessen:
if(APPLE)
target_link_libraries(Prog3B
"-framework Cocoa"
"-framework IOKit"
"-framework CoreVideo"
"-framework OpenGL"
)
endif()

View File

@ -14,7 +14,7 @@ void gamecube::Update(float flipSpeed)
flippingForward = false;
flipped = true;
}
}
}// test
else if (flippingBackward)
{
rotation -= flipSpeed;

66
gantt Normal file
View File

@ -0,0 +1,66 @@
========================================================
GANTT-CHART Projekt gamematrix (C++ Library)
Rolle: Projektleiter
========================================================
Gesamtdauer: 90 Minuten
Vorgehensmodell: Wasserfall
Datum: 03.11.2025
Teammitglieder: (getBeerreturntrue)
--------------------------------------------------------
Legende:
█ = aktive Arbeitszeit
░ = Unterstützung / Wartezeit / Review
--------------------------------------------------------
Zeit: 0 10 20 30 40 50 60 70 80 90
|----|----|----|----|----|----|----|----|----|
--------------------------------------------------------
1. ANFORDERUNGSANALYSE (010 min)
--------------------------------------------------------
Projektleiter ██████████
Architekt ████░░░░░░
Entwickler ░░░░░░░░░░
Tester ███░░░░░░░
--------------------------------------------------------
2. DESIGN / ENTWURF (1020 min)
--------------------------------------------------------
Architekt ████████████
Projektleiter ███░░░░░░░░░
Entwickler ░░░░░░░░░░░░
Tester ███░░░░░░░░░
--------------------------------------------------------
3. IMPLEMENTIERUNG (2050 min)
--------------------------------------------------------
Entwickler ████████████████████████
Projektleiter ███░░░░░░░░░░░░░░░░░░░░
Architekt ░░░░░░░░░░░░░░░░░░░░░░░
Tester ██░░░░░░░░░░░░░░░░░░░░░
--------------------------------------------------------
4. TESTEN & VALIDIERUNG (5070 min)
--------------------------------------------------------
Tester ███████████████
Entwickler ███░░░░░░░░░░░░
Projektleiter ██░░░░░░░░░░░░░
Architekt ░░░░░░░░░░░░░░
--------------------------------------------------------
5. ABSCHLUSS / DOKUMENTATION (7090 min)
--------------------------------------------------------
Projektleiter ██████████████
Architekt ██░░░░░░░░░░░░
Entwickler ██░░░░░░░░░░░░
Tester ██░░░░░░░░░░░░
--------------------------------------------------------
Ergebnisse:
- Anforderungen abgeschlossen
- Design & Architektur dokumentiert
- Funktionen implementiert und getestet
- Merge & Abschlussdokumentation fertig
========================================================

59
requirements.txt Normal file
View File

@ -0,0 +1,59 @@
========================================================
Projekt: gamematrix (C++ Library)
Rolle: Projektleiter
Datei: requirements.txt
Datum: 03.11.2025
Team: getBeerreturntrue(3 Personen)
========================================================
# ----------------------------
# 1. Projektziel
# ----------------------------
Ziel: Entwicklung einer C++-Bibliothek für 3D-Transformationen (4x4-Matrizen)
zur späteren Nutzung über pybind11 in Python sowie Integration in das
bestehende Spielprojekt. Bereitstellung von Funktionen für Translation,
Rotation und Matrixmultiplikation im 3D-Raum.
# ----------------------------
# 2. Funktionale Anforderungen
# ----------------------------
| Funktion | Eingabe | Ausgabe | Kurzbeschreibung |
|---------------|------------------------------------|-----------------------|----------------------------------------|
| matmul | 4x4 Matrix A, 4x4 Matrix B | 4x4 Matrix | Multiplikation zweier 4x4 Matrizen |
| translate | 3D Vektor (x,y,z) | 4x4 Matrix | Erzeugt Translationsmatrix |
| rot3D | Winkel in °, Rotationsachse (x/y/z)| 4x4 Matrix | Rotationsmatrix um Achse |
| identity | --- | 4x4 Matrix | Identitätsmatrix zurückgeben |
| apply | Matrix, Vec3 | Vec3 | Vektor mit Transformationsmatrix transformieren |
# ----------------------------
# 3. Nicht-funktionale Anforderungen
# ----------------------------
- Lesbarkeit & Wartbarkeit (klarer Namespace, Header-Trennung)
- Ausführung in Echtzeit-Spielumgebung (gute Performance)
- Kompatibilität mit pybind11
- Keine dynamische Speicherallokation innerhalb der Matrixoperationen
# ----------------------------
# 4. Annahmen / Einschränkungen
# ----------------------------
- Alle Matrizen im homogenen Format 4x4
- Winkelangabe in Grad
- Datentyp double
- Koordinatensystem: Rechtshändig
# ----------------------------
# 5. Abnahmekriterien
# ----------------------------
- Beispiel-Transformationen funktionieren korrekt
- Unit-Tests für alle Funktionen bestehen
- Vergleich mit bekannten Resultaten (z. B. 90°-Rotation)
- Bibliothek lässt sich erfolgreich in Python binden
========================================================
Hinweis:
Diese Datei wird vom Projektleiter gepflegt.
========================================================

View File

@ -1,22 +1,28 @@
#include <iostream>
#include <cmath>
#include "gamematrix.h"
using namespace Matrix3D;
void test_rotation_z() {
Vec3 v{1,0,0};
auto R = rot3D(90,'z');
Vec3 res = apply(R,v);
std::cout << "Rotate Z 90° -> (" << res.x << "," << res.y << "," << res.z << ")\n";
}
void test_translate() {
Vec3 v{0,0,0};
auto T = translate({1,2,3});
Vec3 res = apply(T,v);
std::cout << "Translate -> (" << res.x << "," << res.y << "," << res.z << ")\n";
bool approx(double a, double b, double eps = 1e-6) {
return std::fabs(a - b) < eps;
}
int main() {
test_rotation_z();
test_translate();
int failed = 0;
// Beispiel-Test: Rotation um Z 90°
std::array<double,3> v = {1,0,0};
auto Rz = rot3D(90, 'z'); // ggf. Namespace anpassen
auto result = apply(Rz, v);
if (!approx(result[0], 0.0) || !approx(result[1], 1.0)) {
std::cout << "Test rot3D(Z,90) failed!\n";
failed++;
}
// Ausgabe
if (failed == 0)
std::cout << "ALL TESTS PASSED ✅\n";
else
std::cout << failed << " TEST(S) FAILED ❌\n";
return failed;
}