Die 'CoolMathLibrary' (CML) ist eine einfache C++ Mathebibliothek die diverse nützliche Klassen und Funktionen bereitstellt. Eine Nutzung im Zusammenhang mit OpenGL ist vorgesehen, aber natürlich kann CML auch in anderen Bereichen genutzt werden. CML steht unter der GNU General Public License (Version 2).
CML wird von mir aktiv eingesetzt, trotzdem können Bugs natürlich nicht ausgeschlossen werden. Falls du einen Bug gefunden hast setze mich bitte davon in Kenntnis, z.B. per Email, PN oder im Diskussions-Thread.
Features
Unterstützung für Zeilenvektoren (2,3,4,N) und quadratische Matrizen (3x3, 4x4, MxN).
Unterstützung für Quaterions und Frames (ein Frame ist ein Quaternion kombiniert mit einem Translationsvektor)
BoundingBox und Plane Klasse.
Zugriff auf die Daten direkt über Attribute (z.B. vector.x) oder den Array-Operator (z.B. vector[0]). Auf die Elemente einer Matrix kann über den zweistelligen ()-operator zugriffen werden, also z.B. matrix(2,3).
Viele Operationen sind in der aktuellen Beta mit Hilfe von Schleifen implementiert. Der Compiler entscheidet ob er lieber Rechenoperationen einspart (Schleifenindices) oder die stattdessen die Größe des compilierten Codes optimiert. Die Verwendungen von inline ist mit bedacht gewählt.
überladene Outputstream-Operatoren
Alle Klassen sind als Templates realisiert. Eine Nutzung mit den Typen float oder double ist vorgesehen. Vektoren können auch mit int32_t oder uint32_t benutzt werden. Weitere Typen sind möglich, solange die entsprechenden Operatoren sinnvoll implementiert sind. Benutze die vordefinierten Typen, z.B. Vector3f, Vector3d oder Vector3i.
Verwendung von statischen Assertions (C++0x) zum testen der Template-Parameter. Diese können über ein Makro abgeschaltet oder z.B. durch Laufzeit-Assertions ersetzt werden.
Download
coolmath-2010-06-26.zip (Achtung: in dieser alten Version funktionieren einige Operationen leicht anders!)
Benutzung Einfach coolmath/coolmath.h inkludieren. Alle Klassen und Funktionen befinden sich im Namespace CML. Operatoren sind größtenteils sinnvoll überladen um die Handhabung zu erleichtern.
Code:
usingnamespace CML;
Vector3f position(0,0,-3);
Vector3f velocity(0,4,1);
float timeElapsed =1.0f/100.0f;
// Vektor-Addition und Skalar-Vektor-Multiplikation
CoolMath 2011-03-22 BETA veröffentlicht. Download-Link oben im ersten Post.
Changelog
Reimplemented large parts. Not all features are available again yet.
Vector and Matrix may now have arbitrary size. However, not all operations are supported for all sizes.
Vector operations are now element-wise like vectors in GLSL shaders. The dot and cross products are now implemented in independent functions. This results in a more clean syntax. Make sure you check for this when upgrading from the old version.
Heavy use of C++0x style static assertions to check template parameters. If your compiler doesn't support C++0x you can replace them with runtime assertions or disable them at all using a macro.
More rational usage of inline.
Using loops instead of hardcoded operations in many cases.
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.