2009-06-22 12 views
4

Was ist die beste, komplexe Math-Bibliothek in C++? (Ich möchte es in Grafik-Engine verwenden)C++ 3D Math Bibliothek

EDIT: Ich sollte es ein bisschen präzisieren: es sollte alle 3D-Mathematik, wie Ebenen, Kugeln, Punkte, AABB usw. und natürlich Matrix, Vektor, Quaternion-Unterstützung.

Antwort

6

Es hängt davon ab, was Sie entwickeln werden. Nach meinem Wissen sind das gute libs.

Geometric Tools (früher als Wildmagic bekannt)

OxMath 2D/3D-Math Library 2,1

MATHLIB3D

Configurable Math Library (CML)

glmath

+1

Ich werde Math Lib von Geometrischen Werkzeugen versuchen - es scheint zu sein, was ich suche, aber ich werde es tief überprüfen müssen, bevor ich es verwenden werde – chris

+1

Einige Verbindungen würde nicht Ich gehe in die Irre ... –

+0

Ich empfehle geometrische Werkzeuge, es ist die Grundlage für die Mathematikbibliothek von Ogre3D, die ich extrahiert und in vielen meiner Projekte verwendet habe. Es ist in der Regel 2-3 mal besser als das, was math Bibliothek andere Projekte bauen, wie sie gehen. –

1

Meinen Sie am besten wie in der Geschwindigkeit? Wenn Sie für Windows schreiben und Sie über Vektormathematik, Matrixmathematik und dergleichen sprechen, habe ich nichts schneller als die Math-Funktionen in DirectX/XNA ausgeführt. (D3DX)

DirectX bietet keine Unterstützung für komplexe Nummern; Es geht um Floats, aber ich glaube nicht, dass Leute sehr oft komplexe Zahlen in Grafik-Engines verwenden. Es wäre leicht genug zu implementieren, wenn Sie es haben müssten.

+0

"Das Beste" bedeutet für mich, dass es alle 3D-Mathematik, wie Ebenen, Kugeln, Punkte, AABB usw. und natürlich Matrix, Vektor, Quaternion-Unterstützung haben sollte. – chris

+1

Die mathematischen Funktionen von D3DX sind alle statisch und behandeln alle grundlegenden mathematischen Berechnungen bis hin zu Quats, Dreieckshittests und AABB-Schnitttests.(Obwohl ich zuletzt gesehen habe, gibt dir der AABB-Test keinen interessanten Punkt, nur wahr/falsch; eine kleine Enttäuschung) Der Rest der Dinge wie Quads, Kugeln, Kästen, Zylinder usw. sind nicht schwer zu implementieren, indem sie ihre Mathematik verwenden unterhalb. Sie sind schnell und ziemlich umfassend. –

+0

Ich kann ganze Mathematik-Bibliothek auf mich selbst implementieren :) Aber ich mag es nicht, das Rad neu zu erfinden, und ich bin auf der Suche nach etwas überprüft. D3DX ist zu einfach für mich und es fehlen zu viele Funktionen, die ich gerne hätte. – chris

0

Haben Sie die Boost Library von http://www.boost.org/ getestet?

Es wird nicht die beste Leistung geben, aber es ist ziemlich Standard und Cross-Plattform.

+0

Es tut mir leid, aber Boost ist eine Sammlung von Bibliotheken, keine 3D-Mathematik-Bibliothek. Die Frage ist ziemlich vage, aber so ist diese Antwort –

+0

Boost haben Quaternion –

0

Sie können auch einen Blick auf die leichte Template-Bibliothek math2-matrix-vector mit SIMD-Unterstützung werfen. Sie können es unter boost vault "Math - Geometrie" Ordner herunterladen.
Und Ogre3d Framework hat eine eigene Math-Bibliothek (basierend auf WildMagic 0.2). Sie können es aus dem Framework extrahieren und in Ihrer Anwendung verwenden, da Ogre3d> 1.7 unter MIT license verteilt ist.

3

Wenn Sie mit OpenGL arbeiten, können Sie die OpenGL Mathematics (glm) Bibliothek versuchen. Es implementiert alle seine Klassen in Bezug auf GLSL, so dass es einfach zwischen Client-Seite und Server-Seite zu verwenden ist.

0

CGAL - Die Bibliothek bietet Datenstrukturen und Algorithmen wie Triangulationen, Voronoi-Diagramme, Boolesche Operationen an Polygonen und Polyedern, Punktmengenverarbeitung, Anordnung von Kurven, Oberflächen- und Volumengittergenerierung, Geometrieverarbeitung, Alpha-Formen, konvexe Hüllenalgorithmen, Formanalyse, AABB und KD Bäume ...