ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4384260
Jetzt (Chat):
21 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-

ZFX
Coding-Foren
Algorithmen und Datenstrukturen
Komplette MatheBibliothek
GepinntSeite: 1 2 3 4 5 . . . a 17 18 19 20 21 >
AutorThema
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Komplette MatheBibliothekNach oben.

Hi,

so die zehnte MatheLibraryFrage, aber endlich eine die es hoffentlich zu einem Punkt bringt.
Es ist jetzt notwendig eine komplette Mathelibrary auf templatebasis zu haben, die von vornherein alles unterstützt sodass keine äußerlichen änderungen mehr während der verwendung der selben mehr notwendig ist.
bevor ich jetzt anfange die hundertste Mathelib zu basteln, frag ich mal ob das nciht schon zufällig jemand gemacht hat?

Meine umsetzung hätte wenigstens folgende dinge:

Quarternion
Matrix4x4
Matrix3x3
Vector4D
Vector3D
Point3D (beliebige Position mit einstellbarer genauigkeit)
Plane - Frustum - Sphere - AAB
Noise

evtl. noch
Vector2D
OOB

---

nun bietet Magic Software ein schon ganz gutes paket an, aber es hat viele kleine lücken die man füllen müsste, um absolute einfachheit/kompatibilität zwischen all diesen klassen zu erreichen. wenn jetzt nicht zufällig jemand lust hat seine lib anzubieten, werde ich wohl die Magic Software sachen umbauen. oder hat jemand einwände?
03.06.2004, 19:46:50 Uhr
DirectX 10
Zacharias Offline
ZFX'ler


Registriert seit:
12.02.2003

Österreich
342797788
Re: Komplette MatheBibliothekNach oben.
Zitat:
oder hat jemand einwände?
nein
aber ich hätte da zwei Fragen:
1.Ist die Lib auf Performance optimiert ( Assambler etc )?
2.Wird sie veröffentlicht? ( So ne Lib wär irrsinnig praktisch )
03.06.2004, 20:30:51 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: Komplette MatheBibliothekNach oben.

1. vorerst nicht, darauf kommt es am anfang auch nicht an. später wenns ans optimieren geht vielleicht, aber erstmal müssen alle benötigten funktionalitäten rein.

2. wenn ich die jetzt wirklich aus der Magic Software Lib zusammenschustern muss, dann schon. wenn hier schon jemand sowas hat, dann wär das natürlich prima.
03.06.2004, 20:36:23 Uhr
DirectX 10
Zacharias Offline
ZFX'ler


Registriert seit:
12.02.2003

Österreich
342797788
Re: Komplette MatheBibliothekNach oben.
Ich hab schon unzählige Mathe-Funktionen und Klassen geschrieben, allerdings hab ich mir noch nie die Mühe gemacht eine Lib zu schreiben, geschweige denn mit Templates ( auch wenn das nicht viel schwieriger werden würde ). Du wirst es bereits erahnen: ich habe leider keine Lib. Allerdings würde ich gerne helfen deine Lib zu proggen.
Weitere Frage: Dynamische oder statische lib?

mfg
03.06.2004, 20:49:49 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: Komplette MatheBibliothekNach oben.

mit lib meine ich einfach nur code so wie er ist, h und cpp.
03.06.2004, 20:52:34 Uhr
DirectX 10
TheLord Offline
ZFX'ler


Registriert seit:
15.01.2003

Nordrhein-Westfalen
260782128
Re: Komplette MatheBibliothekNach oben.
Also etwas anbieten kann ich auch. Meine Mathelib umfasst im Moment das hier:

Vector2/3/4
Matrix44
Ray
Quaternion
AABB
OBB
Plane
Polygon
Size (n-Dimensional)
Rect (n-Dimensional)
Kleine Templates zum Berechnen von Sachen wie 5^4 zur Compiletime und setzen von Bits in Datenwerten.

Allerdings muss meine Mathebibliothek noch teilweise erweitert werden. Getestet ist das wichtigste schon und ich habe bisher keine Probleme festellen können.

Die ganze Bibiothek basiert auf Templates. Diese sind für float spezialisiert und rufen dann über Funktionspointer entsprechende Funktionen aus z.B. für SSE.
Das System muss ich aber noch erweitern.

Außerdem gibt es eine zentrale Klasse, die Prozessortyp, .. abfragt und Matheplugins verwaltet.

Also ich würde diese Lib anbieten, allerdings müssen Teile wie gesagt erst noch überarbeitet und dokumentiert werden.
03.06.2004, 21:04:03 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: Komplette MatheBibliothekNach oben.

das klingt doch sehr gut, in wie fern kann man denn da schonmal reinschauen und wann könnte man einen release erwarten?
03.06.2004, 21:37:07 Uhr
DirectX 10
Florianx Offline
ZFX'ler


Registriert seit:
27.02.2002

Bayern
Re: Komplette MatheBibliothekNach oben.
Zitat:

Außerdem gibt es eine zentrale Klasse, die Prozessortyp, .. abfragt und Matheplugins verwaltet.


Für was braucht eine Mathe-Lib Plugins?
Für die Prozessortyp-Abfrage und setzen der entsprechenden Funktionspointer reicht doch eine Init-Funktion, oder?

Ich würde auch bei einer Mathe-Lib mithelfen, allerding sind meine Mathe-Kenntnisse nicht gerade perfekt. Ich hab bisher nur eine Vektorklasse, Template-Funktionen (z.B. Min, Max, etc.) und Standard-float/double-Funktionen wie sin, cos, sqrt usw. in ASM geschrieben.
03.06.2004, 22:14:31 Uhr
D-Swat Offline
ZFX'ler


Registriert seit:
07.01.2003

Thüringen
Re: Komplette MatheBibliothekNach oben.
Schau dir mal den Math Teil von der XEngine an
03.06.2004, 22:14:58 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: Komplette MatheBibliothekNach oben.

boah, die ham genau die sachen die bei magic software noch gefehlt haben.
nur leider kann man das nit runterladen, wobei das auch nicht viel brignen würde, da das sicherlich unter dieser doofen standard sourceforge license rausgeht, wobei man seinen eigenen code der das teil verwendet auch unter dieser lizens ferigeben muss.
03.06.2004, 22:31:34 Uhr
DirectX 10
TheLord Offline
ZFX'ler


Registriert seit:
15.01.2003

Nordrhein-Westfalen
260782128
Re: Komplette MatheBibliothekNach oben.
Zitat von Richard Schubert:
in wie fern kann man denn da schonmal reinschauen und wann könnte man einen release erwarten?

Also ich könnte jetzt am Wochende erstmal die Matrix/Vektor-Klassen online stellen. Allerdings sage ich gleich vorher, dass sich meine Mathebibliothek wohl nicht mit der von der XEngine messen kann.
Wann das Release der Mathebibliothek kommt, hängt davon ab, was ich noch ergänzen/testen muss. Die Dokumentation ist, glaube ich, nicht so sehr das Problem und sollte relativ schnell geschafft sein.

Zitat von Florianx:

Für was braucht eine Mathe-Lib Plugins?
Für die Prozessortyp-Abfrage und setzen der entsprechenden Funktionspointer reicht doch eine Init-Funktion, oder?

Also in meinem Projekt braucht man dann einfach nur eine DLL in den PlugIn-Ordner zu schieben und schon kann die Mathebibliothek z. B. durch SSE2 optimieren, falls das vom Prozessor unterstützt wird. Man muss aber keine PlugIns verwenden, es geht auch ohne.

Sowas wie min, max, sin, cos, ... gibt es in meiner Mathelib allerdings nicht, weil ich nicht überzeugt bin, dass meine eigenen Implementierungen schneller wären als die Standardfunktionen. Wenn man will, kann man das natürlich trotzdem noch nachträglich einfügen.


XEngine läuft übrigens unter zlib/libpng-Lizenz, habe ich gerade gesehen.
04.06.2004, 07:33:46 Uhr
Mr.DX Offline
ZFX'ler


Registriert seit:
01.08.2002

Bayern
297101048
Re: Komplette MatheBibliothekNach oben.
Zitat von TheLord:
Also etwas anbieten kann ich auch. Meine Mathelib umfasst im Moment das hier:

Vector2/3/4
Matrix44
Ray
Quaternion
AABB
OBB
Plane
Polygon
Size (n-Dimensional)
Rect (n-Dimensional)

Was haben den Size und Rect für Aufgaben und was kannst damit berechnen lassen?
04.06.2004, 08:31:21 Uhr
Kimmi Offline
ZFX'ler


Registriert seit:
10.10.2002

Schleswig-Holstein
93425079
Re: Komplette MatheBibliothekNach oben.
Da bieten wir uns von ZFXCE Team natürlich auch mal an. Da Mr.DX eh zum Patchwork-Projekt gehört und wir näher zusammenarbeiten wollen, können wir (hoffentlich) etwas dazu beitragen. Momentan habe ich aber noch keinen vollstängigen Überblick, welche Parts in der ZFXCE bereits zur Verfügung stehen. Aber ich werde das heut abend mit Enrico abklären können. Ich gebe allerdings zu bedenken, dass ich noch nicht so besonders grosse Erfahrung mit Templates habe, allerdings ist Numerik und Mathematik mein Steckenpferd.
Was sagt ihr?

MfG Kimmi
04.06.2004, 10:29:46 Uhr
Kurzer Weblog
Mr.DX Offline
ZFX'ler


Registriert seit:
01.08.2002

Bayern
297101048
Re: Komplette MatheBibliothekNach oben.
Zitat:
Da bieten wir uns von ZFXCE Team natürlich auch mal an. Da Mr.DX eh zum Patchwork-Projekt gehört und wir näher zusammenarbeiten wollen, können wir (hoffentlich) etwas dazu beitragen. Momentan habe ich aber noch keinen vollstängigen Überblick, welche Parts in der ZFXCE bereits zur Verfügung stehen. Aber ich werde das heut abend mit Enrico abklären können. Ich gebe allerdings zu bedenken, dass ich noch nicht so besonders grosse Erfahrung mit Templates habe, allerdings ist Numerik und Mathematik mein Steckenpferd.
Was sagt ihr?

Da stimme ich dir zu, eine Zusammenarbeit für eine gute Mathebibliothek ist sehr gut Idee. Schließlich ist eine gute Mathebibliothek das Herz einer guten Engine.

1 Mal gendert, zuletzt am 04.06.2004, 11:10:16 Uhr von Mr.DX.
04.06.2004, 11:09:47 Uhr
Florianx Offline
ZFX'ler


Registriert seit:
27.02.2002

Bayern
Re: Komplette MatheBibliothekNach oben.
@TheLord: Macht man sich den Vorteil von SSE etc. nicht durch den Overhead eines Plugins/Dll zunichte?

Ich hab die Funktionen wie sin, cos usw. nur geschrieben, weil ich was mit ASM machen wollte. Man spart sich aber minimal Zeit, weil die Funktionen inline sind. Das ist aber wirklich nur minimal.
04.06.2004, 13:26:47 Uhr
TheLord Offline
ZFX'ler


Registriert seit:
15.01.2003

Nordrhein-Westfalen
260782128
Re: Komplette MatheBibliothekNach oben.
Nein, dass PlugIn-System dürfte kaum Overhead verursachen. In meinem System kann ich innerhalb der Matheklassen komplett auf virtuelle Funktionen verzichten. Die Funktionen, die tatsächlich Functionspointer aufrufen sind so oder so inline, so dass man weiterhin nur einen normalen Aufruf hat. Außerdem benutze ich diese Optimierungen bisher nur an den wirklich wichtigsten Stellen (Matrixmultiplikation, ...).

Zitat von Mr.DX:
Was haben den Size und Rect für Aufgaben und was kannst damit berechnen lassen?

Die Klassen Size und Rect sind eigentlich nur einfach Hilfsklassen, mit denen man (zumindest bisher) auch nicht viel Mathematisches berechnen kann. Beispiel für ein Size-Objekt:
Code:
CX::Size<unsigned int, 3> size;

Sowas verwende ich z. B. zum speichern von Bildschirmauflösungen, etc. Wenn man möchte, könnte man natürlich noch weitere Funktionen hinzufügen, z. B. Berechnung des Flächeninhaltes. Allerdings hatte ich bisher noch nicht das Gefühl, dass ich sowas benötigen könnte. Für dreidimensionale Objekte gibt es ja ohnehin spezielle Objekte (AABB, OBB, ...)
04.06.2004, 18:05:48 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: Komplette MatheBibliothekNach oben.

wie gehts denn jetzt eigentlich weiter?
ich habe mir die coding_conventions aus der zfxce angeschaut und finde alles bis auf diese dinge verwendbar für die mathelib:

Code:
p_    - für Parameter ( z.B. void Foo(int p_iValue); )

native Datentypen nach ungarischer Notation ( m_iMyInt, m_fMyFloat, m_sMyString )
Klassen und eigene Datentypen mit 'x'(m_xMyInstance)


ist jemand gegenteiliger meinung?

ansonsten könnten wir uns schonmal langsam überlegen was wenigstens enthalten sein soll.
anschließend wer was macht und schon gehts los, gell?!
13.06.2004, 21:26:25 Uhr
DirectX 10
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: Komplette MatheBibliothekNach oben.
Wichtige Konstanten (PI, 2PI, nen Epsilon, etc. )
Matrix4x4
Matrix3x3
MatrixStack
Vector4D
Vector3D
Quarternion
Ray
Point3D (beliebige Position mit einstellbarer genauigkeit)
Plane - Frustum - Sphere - AABB - OOBB
allerlei Noise
Vector2D
Mini-utils (min, max, clamp, etc.)

das ganze wie die XEngine, mit übermäßig vielen Konstuktoren um maximale kompatibilität zwischen den typen zu gewährleisten.
noch irgendwelche ergänzungen?

1 Mal gendert, zuletzt am 14.06.2004, 21:42:19 Uhr von Richard Schubert.
14.06.2004, 21:26:18 Uhr
DirectX 10
Mili Offline
ZFX'ler


Registriert seit:
05.08.2002

Deutschland
92487498
Re: Komplette MatheBibliothekNach oben.
Gehören eigentlich solche Sachen wie Bsp-Bäume, Octree usw. auch zu einem Mathe-Lib oder eher nicht?
14.06.2004, 22:40:47 Uhr
www.sadinam.de
Florianx Offline
ZFX'ler


Registriert seit:
27.02.2002

Bayern
Re: Komplette MatheBibliothekNach oben.
vielleicht eigene Basis-Funktionen wie sin, cos, ..., sind etwas schneller.
Welche Klassen könnte man als Template machen?

wegen den coding conventions:
- keine Prefixe (also var anstatt iVar etc.)
- Member von Vector, Matrix, etc. public
- namespace, z.B. mathlib::Vector
- kein m_ ? also vec.x anstatt vec.m_x, sieht besser aus?

1 Mal gendert, zuletzt am 14.06.2004, 22:42:45 Uhr von Florianx.
14.06.2004, 22:41:23 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: Komplette MatheBibliothekNach oben.
Octree und Quadtree können sicher nicht, schaden, wenn sich jemand findet der diese implementiert dann immer her damit.

@Florianx:
stimme dir voll zu, namespace vielleicht einfach nur math oder ZFXMath?

templates sollten so ziemlich alle klassen sein. ich benötige unbedingt double precision und teilweise auch long doubles. wäre daher nicht schlecht, wenn alles soweit wie möglich mit templates gemacht ist. wenn man bei einzelnen sachen die single floats trotz der templates mit SSE optimieren könnte wäre das natürlich toll, weiß jetzt aber nicht ob das geht, hoffentlich kennt sich da einer aus.

1 Mal gendert, zuletzt am 14.06.2004, 23:11:08 Uhr von Richard Schubert.
14.06.2004, 23:10:33 Uhr
DirectX 10
Kimmi Offline
ZFX'ler


Registriert seit:
10.10.2002

Schleswig-Holstein
93425079
Re: Komplette MatheBibliothekNach oben.
Findet ihr es nicht etwas dicke, in einer Mathematik-Lib Dinge wie Octtrees zu verpacken? Das ist schliesslich ein Partitionierungs-Algorithmus und kein grundsätzlicher Vorgang wie Intersections zwischen Ebenen oder dergleichen.
Dazu brauchen wir uns bei generischer Erstellung der Matrizen, Vectors, Ebenen und derrgleichen nicht um double-presicion zu kümmern, wenn man Templates einsetzt.
Wichtiger Grundsatz sollte aber sein:
- Portabel!!!
- Assembler nur in OS-spez. Präprozessoranweisungen

Als Namensraum würde ich ZFXMath vorschlagen, dann hat die komplette ZFX, die Patchworker und die ZFXCE-Leute was davon, ohne dass sich jemand alle Federn anklebt.

MfG Kimmi
15.06.2004, 08:43:32 Uhr
Kurzer Weblog
Florianx Offline
ZFX'ler


Registriert seit:
27.02.2002

Bayern
Re: Komplette MatheBibliothekNach oben.
Octree und Quadtree sollten wir (vorerst) rauslassen.
Zuerst sollten wir alles ohne ASM-Optimierung machen. Wenn es dann läuft, können wir Optimieren.

Wie machen wir das mit der Organisation?
Wer macht alles mit?
Benutzen wir CVS? (von der zfxce?)
Dokumentation? Doxygen? Deutsch? Englisch?

Konstanten: PI, 2PI, Epsilon
Matrix: 4x4, 3x3, Stack
Vector: 4D, 3D, 2D
Quarternion
Ray, Plane, Frustum, Sphere, AABB, OOBB
Point3D (einstellbare Genauigkeit)
min, max, clamp, sin, ..., sqrt, log, ..., round, ...

coding conventions:
- Funktionsnamen groß oder klein? (Func() oder func())
- inline Funktionen in einer *.inl ?

Was haltet ihr von einem solchen Aufbau:
(nur ein Beispiel)
Code:
#ifndef _ZFXMATH_INCLUDE_VECTOR2D_H_
#define _ZFXMATH_INCLUDE_VECTOR2D_H_

namespace ZFXMath
{
   template
   class Vector2D
   {
   public:
      T x,y,z;

      Vector2D();
      ASampleFunction(const T& t);
   };
}

#endif //_ZFXMATH_INCLUDE_VECTOR2D_H_


2 Mal gendert, zuletzt am 15.06.2004, 13:52:48 Uhr von Florianx.
15.06.2004, 13:43:42 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: Komplette MatheBibliothekNach oben.

alles sehr schön. gefällt mir gut.
Methoden sollten großgeschrieben sein, wobei einfache funktionen vielleicht klein bleiben sollten?

könnte man auch "#pragma once" verwenden anstelle diesem makrozeugs?
15.06.2004, 14:17:32 Uhr
DirectX 10
Florianx Offline
ZFX'ler


Registriert seit:
27.02.2002

Bayern
Re: Komplette MatheBibliothekNach oben.
"#pragma once" funktioniert nur bei msvc, oder?
15.06.2004, 14:31:35 Uhr
GepinntSeite: 1 2 3 4 5 . . . a 17 18 19 20 21 >


ZFX Community Software, Version 0.9.1
Copyright 2002-2003 by Steffen Engel