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:
4410596
Jetzt (Chat):
18 (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
MadMax Offline
ZFX'ler


Registriert seit:
24.01.2003

Baden-Württemberg
159856355 x x x
Re: Komplette MatheBibliothekNach oben.
Zitat von Kon:
zu Funktionspointern:

inlining hat den Nachteil das der code wächst und
dadurch langsam werden kann.
der compiler entscheidet ja eh wann inline wann nicht
design-technisch sehr elegant

zu ints:

wenn jemand damit rechnen will kann er doch ganz
normales c benutzen
int Berechnungen optimiert ein Compiler von selbst

selbst für machen texturen nutzt man heute floating-points

templates sind sprachen spezifisch und nicht gerade schnell weil eine Optimierung denkbar
schwierig ist

es geht um Echtzeit und gerade bei Mathe was
will man da schon grossartig vorrechnen

Warum ist eigener FPU-Code schneller?
Heutige Compiler haben die Priorität überhaupt etwas
lauffähiges zu erzeugen ob es anders besser wär
weiss er nicht wirklich
gerade bei floats viel push und pop
weil er die 32 Bit einhalten muss
die FPU "denkt" aber 80 bittig
sowieso finde ich reicht es SSE als unterste Stufe zu nutzen

das selbe bei Schleifen man kann viele Schleifen
effektiver schreiben als sie der Compiler
übersetzt

der Compiler ist kein Überwerkzeug das sich die
nächste Anweisung schon denken kann

MfG Kon


Bitte mach keine Zeilenumbrüche mehr oder wenigstens etwas sparsammer so bekommt man Kopfschmerzen beim lesen.
01.03.2006, 23:31:00 Uhr
x
Wassja Offline
ZFX'ler


Registriert seit:
24.01.2005

Nordrhein-Westfalen
Re: Komplette MatheBibliothekNach oben.
Hab mir noch was überlegt zu den Quadratischen Matrizen. Wenn ihr die Invers und Determinante nicht wollt, kann man ja ne extra Klasse TTensor anlegen. Da sind dann auch so diagonalisier- und Eigenwert/vektor Geschichten drin.
Ich hab am 15. 03. meine letzte Klausur, dann kann ich wieder mal was machen.
02.03.2006, 16:08:08 Uhr
Wassja Offline
ZFX'ler


Registriert seit:
24.01.2005

Nordrhein-Westfalen
Re: Komplette MatheBibliothekNach oben.
Und was ist bitteschön ne FPU?

Und noch als Argument zu Templates: Könnt ja mal wer auf die verrückte Idee kommen, mit eigenen Zahlenklassen zu arbeiten. Dann soll unsere MathLib ja auch noch funktionieren.
02.03.2006, 16:09:44 Uhr
Kimmi Offline
ZFX'ler


Registriert seit:
10.10.2002

Schleswig-Holstein
93425079
Re: Komplette MatheBibliothekNach oben.
FPU = Floading Point Unit

MfG Kimmi
02.03.2006, 16:16:04 Uhr
Kurzer Weblog
Kimmi Offline
ZFX'ler


Registriert seit:
10.10.2002

Schleswig-Holstein
93425079
Re: Komplette MatheBibliothekNach oben.
@KON: Wie kommst du denn au den Trichter mit den Templates und langsamer? Richtig angewandt können die deinen Code ganz entscheidend beschleunigen.
Templates haben dazu noch einige andere Vorteile: Eingens definierte Datentypen können ebenfalls mittels der Library eingebaut werden, ein Switch von Single auf Double precision muss nicht mittels 2 separater Codebranches implementiert werden, man spart sich gerade bei Datentypen wie Float- und Double-Vekoren die VTable, da man den Code zur Compilezeit generieren lässt und nichts überladen oder ableiten muss etc. .
Zu SSE: Schwer portabel zu halten, aber machbar.

Zum Optimieren: Wenn man entsprechende Vorgaben hinterlegt wie Einsatz von Const und Buffergrössen cachefreundlich hinterlegt, sollte der Compiler schon einiges rausholen können. Aber man sollte den Algorithmus cache- und rechenfreundlich gestalten, nicht den Loop. Ohne Profiling macht ein solches Codeoptimieren meist nur den Source unleserlich. Bottleneck kann man aber ggf. optimieren.

Rechtsschreibung: Satzzeichen tun nicht weh! Dein Satzbau aber schon .

MfG Kimmi
02.03.2006, 16:27:21 Uhr
Kurzer Weblog
LiquidAcid Offline
ZFX'ler


Registriert seit:
21.09.2003

Nordrhein-Westfalen
127432520
Re: Komplette MatheBibliothekNach oben.
@Kon: Die meisten deiner Aussagen sind entweder überholt oder schlichtweg falsch. Du widersprichst dir auch häufiger.
zB ist deine Aussage über 'heutige Compiler' absoluter Nonsense. Sowohl der GCC, Intel als auch der MS Compiler sind hochoptimierende Compiler, an denen über Jahre hinweg gefeilt wurde. Der Compiler wurde von Leuten geschrieben, die die Tücken der x86/x64 Architektur besser als kennen, als du deine Westentasche. Was du mit dieser Aussage machst, ist höchstens diese Leute zu beleidigen.

Die Sache sieht anders aus, wenn SIMD Code erstellt wird und die Person Ahnung der Cache-Kohärenz, Pipelining und dem Branchingprinzip der Architektur hat. Es wäre aber falsch zu sagen, dass die Compiler hier nicht aufholen würden.

cya
liquid


1 Mal gendert, zuletzt am 03.03.2006, 22:58:16 Uhr von LiquidAcid.
02.03.2006, 20:15:20 Uhr
CPP Kniffel
Godhand Offline
ZFX'ler


Registriert seit:
15.10.2002

Deutschland
Re: Komplette MatheBibliothekNach oben.
Hi,

ich habe nochmal nachgedacht ...wäre es nicht möglich, die Inverse einer 4x4 Matrix sehr viel schneller zu berechnen, wenn man annehmen könnte, das keine Skalierung in der Matrix steckt? Also den 3x3 Teil einfach "umdrehen", die 4. Spalte transformieren und die unterste Reihe auffüllen?

Code:
Inverse Matrix von Matrix m[Reihe][Spalte]:

    [0]  [1]  [2]  [3]
[0] m00  m10  m20  m00 * -m03 + m10 * -m13 + m20 * -m23
[1] m01  m11  m21  m01 * -m03 + m11 * -m13 + m21 * -m23
[2] m02  m12  m22  m02 * -m03 + m12 * -m13 + m22 * -m23
[3] 0.0f 0.0f 0.0f 1.0f


Ich hoffe ich werde nicht getreten wenn das grober Bockmist war

Mit freundlichen Grüßen,
Godhand.
03.03.2006, 22:52:24 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: Komplette MatheBibliothekNach oben.
wenn du weißt dass die matrix eine einfach rotation beinhaltet ist die Transponierte matrix gleich der inversen.
03.03.2006, 22:58:56 Uhr
DirectX 10
Godhand Offline
ZFX'ler


Registriert seit:
15.10.2002

Deutschland
Re: Komplette MatheBibliothekNach oben.
Hi,

OK, meine Variante ist aber für Translation und Rotation

Könnte man ja als spezielle Funktion einbauen, wenn man ganz genau weiß, dass in der Matrix beim Aufrauf auf keine Skalierung drinsteckt.

Mit freundlichen Grüßen,
Godhand.
03.03.2006, 23:05:14 Uhr
Kon Offline
ZFX'ler


Registriert seit:
04.07.2005

Brandenburg
349300789
Re: Komplette MatheBibliothekNach oben.
ich sage ja nicht das die Leute die Compiler schreiben keine Ahnung (ausser manche von MS)
ich wollte nur verdeutlichen das der Compiler manche Sache nicht optimieren kann ohne dabei
die Strukutur zu verändern die ihm durch den Source vorgegeben wird
zu FPU code:
das Game Apocalytica (2003) hat(te) noch ne eigene float Klasse

ein Umschalten mit defines is ja wohl mehr als user unfreundlich
man kann doch viel leichter und mobiler wechseln wenn man ne paar pointer moved
es gib ein Game (jedenfalls von dem ich es sicher weiss)
das zwei exe`en hat eine mit SSE und eine ohne (EARTH 2160)
schnell ist dieses Game nicht gerade ausserdem ist der Zeitfaktor in der Entwicklung höher

zu heutige Compiler: der VC++ 6.0 hat noch Probleme ne gute Schleife zubauen
ob up oder down rolling entscheidet der Entwickler nicht der Compiler increment/decrement ebenso

[zitat]
Die Sache sieht anders aus, wenn SIMD Code erstellt wird und die Person Ahnung der Cache-Kohärenz,
Pipelining und dem Branchingprinzip der Architektur hat.[/zitat]
dann ...
läuft die Sache auf einem PC gut und auf dem anderen total langsam
es ist nicht besonders schlau es auf einer Spezifikation hochzuzüchten
es sei denn man wird von Intel oder AMD gesponsort

[zitat]
da man den Code zur Compilezeit generieren lässt[/zitat] mach ich eigentlich immer so *grins

templates hin und her wie reden von Games dh. wir haben solche Structuren
vertex
float x,y,z
vertex Vertices[1000]

und hier optimiert man in der Speicherausrichtung da hilft auch kein Template es behandelt
nur eine DatenStructur an sich nicht aber dessen Ausrichtung

es wäre nähmlich auch sinnvoll das so zugestalten
vertex
float x[10],y[10],z[10]
vertex Vertices[100]
und das macht ein Compiler alleine?

[edit an admin]
bau mal bitte ne grösseres Eingabefeld ein
[/edit]

MfG Kon

1 Mal gendert, zuletzt am 04.03.2006, 16:56:51 Uhr von Kon.
04.03.2006, 16:49:22 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

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

das Game Apocalytica (2003) hat(te) noch ne eigene float Klasse
ach hier ist es wichtig was ein game macht und bei earth2160 nicht?
Zitat von Kon:

ein Umschalten mit defines is ja wohl mehr als user unfreundlich
man kann doch viel leichter und mobiler wechseln wenn man ne paar pointer moved

ich habe schon einige spiele gesehen die mehr als eine exe haben. es ist nicht sonderlich unfreundlich es anzubieten, für verschiedene CPUs kompilieren zu können. wer es braucht verwendet es, wer nicht der nicht. am ende ist es in jedem fall die schnellste variante.

Zitat von Kon:

schnell ist dieses Game nicht gerade ausserdem ist der Zeitfaktor in der Entwicklung höher

oh ja eine projektkonfiguration mehr zu erzeugen ist wirklich super aufwändig, bzw eine sache von wenigen sekunden.

Zitat von Kon:

zu heutige Compiler: der VC++ 6.0 hat noch Probleme ne gute Schleife zubauen

heutige compiler? VC++ 6.0 ist schon fast 10 jahre alt. lad dir die expressversion von VC++2005 runter und schau nochmal genau hin.



Zitat von Kon:

templates hin und her wie reden von Games dh. wir haben solche Structuren
vertex
float x,y,z
vertex Vertices[1000]

und hier optimiert man in der Speicherausrichtung da hilft auch kein Template es behandelt
nur eine DatenStructur an sich nicht aber dessen Ausrichtung

es wäre nähmlich auch sinnvoll das so zugestalten
vertex
float x[10],y[10],z[10]
vertex Vertices[100]
und das macht ein Compiler alleine?

wenn ich zwei vektoren addiere, kommt mir die letzte variante langsamer vor, ob mit SIMD oder ohne.
04.03.2006, 17:56:21 Uhr
DirectX 10
Godhand Offline
ZFX'ler


Registriert seit:
15.10.2002

Deutschland
Re: Komplette MatheBibliothekNach oben.
Hi,

Schade dass niemand wirklich auf meinen Beitrag eingegangen ist, ob es sinnvoll wäre, die von mir vorgestellte Funktion einzubauen.

Mit freundlichen Grüßen,
Godhand.
05.03.2006, 17:54:08 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: Komplette MatheBibliothekNach oben.
das problem daran ist, wann weiß man denn ob eine matrix eine skalierung hat? in einem generischen system wie einem spiel weiß man das überlicherweise nicht. aber vielleicht gibt es solche einzelfälle wo man es hundertprozentig weiß.
es einzubauen schadet ja nicht.
05.03.2006, 18:10:46 Uhr
DirectX 10
Wassja Offline
ZFX'ler


Registriert seit:
24.01.2005

Nordrhein-Westfalen
Re: Komplette MatheBibliothekNach oben.
@Godhand: Ich hab nicht so ganz kapiert wie deine Funktion funktionieren soll. Also bei orthogonalen Matrizen ist die Transponierte die Inverse. Aber was machst du?
06.03.2006, 12:42:52 Uhr
Godhand Offline
ZFX'ler


Registriert seit:
15.10.2002

Deutschland
Re: Komplette MatheBibliothekNach oben.
Hi,

ich hab doch gesagt dass ich getreten werde

Mmmmh ... selber weis ich das auch nicht mehr ... mal sehen ob ich noch meine Kommentare im Code finde

Edit: Ich schätze nur die letzte Spalte ist grade in Frage. Ich gehe davon aus, dass einfach die Verschiebung (in mX3) transformiert wird.

Mit freundlichen Grüßen,
Godhand.

3 Mal gendert, zuletzt am 08.03.2006, 22:09:52 Uhr von Godhand.
08.03.2006, 22:01:53 Uhr
oese Offline
ZFX'ler


Registriert seit:
13.04.2004

Bayern
257965619
Re: Komplette MatheBibliothekNach oben.
ich würd gern auch mal wieder was tun.. macht jemand schon die ebenen und so.. sonst mach ich die nämlich! und gibts sonst noch was zu tun (außer geschwindigkeitsoptimierungen, ih gitt )
07.04.2006, 01:07:34 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: Komplette MatheBibliothekNach oben.
das wäre toll, wenn du mit den ebenen anfangen würdest. ich wollte mit den primitivkörpern zu intersectionerkennung schon seit langem anfangen, komme aber nicht aus dem ausgiebigem testen und anpassen der matrizen, vektoren und quaternions heraus.
07.04.2006, 09:43:13 Uhr
DirectX 10
oese Offline
ZFX'ler


Registriert seit:
13.04.2004

Bayern
257965619
Re: Komplette MatheBibliothekNach oben.
also ich mach jetzt n bisschen die ebenen, aabb und so, mit kollissionssachen
11.04.2006, 12:22:19 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: Komplette MatheBibliothekNach oben.
da passiert ja schon eine ganze menge, fleißig, fleißig. sehr schön, nur wäre es noch besser wenn du einen aktuellen Compiler verwenden könntest, der dir viele Fehler schon zur Compilezeit aufzeigt auch wenn du die Templatefunktionen nicht verwendest bzw noch nicht getestet hast.
oder gibt es einwände sich das VisualC++ Express 2005 zu installieren?
17.04.2006, 13:42:13 Uhr
DirectX 10
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

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

hiho,
ich durfte gerade 20min debuggen warum mein collada import nicht mehr funktioniert, dabei war es etwas simples wie eine änderung in der vektortranformation.
darf ich fragen wie das hier gemeint ist?


Matrix4x4.h
Code:
// änderung von oese, damit auch translation durchgeführt wird
        TVector3D operator * (const TVector3D &vec)const
        {
            return TVector3D(_11 * vec.x + _12 * vec.y + _13 * vec.z,
                                _21 * vec.x + _22 * vec.y + _23 * vec.z,
                                _31 * vec.x + _32 * vec.y + _33 * vec.z) / (_41 * vec.x + _42 * vec.y + _43 * vec.z);
        }


so ganz verstehen kann ich den code nicht, wie kann das korrekt sein? wenn dann sollte doch das ganze so ablaufen wie mit dem Vector4D?!

wobei aus meiner sicht eine multiplikation von einer 4x4Matrix und einem 3DVektor nicht definiert ist, sollte dabei die 4x4 matrix als 3x3 matrix interpretiert werden. wer dennoch die translation haben möchte sollte den vektor in einen 4DVektor umwandeln. Einwände?
19.04.2006, 23:36:02 Uhr
DirectX 10
oese Offline
ZFX'ler


Registriert seit:
13.04.2004

Bayern
257965619
Re: Komplette MatheBibliothekNach oben.
ich fänds schon besser so... schließlich ist die operation eben nicht definiert und das die einzig sinnvolle anwendung! aber wenns dich stört... kann man ja ne "TransformPosition" draus machen! dann würd ich aber den operator garnicht definieren!
22.04.2006, 22:48:35 Uhr
Richard Schubert Offline
DX-Berater


Registriert seit:
05.12.2002

Berlin
85557876 rs@directx9.de
Re: Komplette MatheBibliothekNach oben.
in HLSL hat man die operation auch definiert und zwar so wie sie IMO am intuitivsten ist. einen Vektor zu rotieren, da es ein sich dabei um einen vektor handelt und nicht um eine position.
mit Trannsformposition ist eine gute idee.
ist dann die implementation richtig mit der division am ende? ich kann mir nicht zusammenreimen wie das zustande kommen soll, hast du vielleicht eine quelle wo man das nachlesen kann?

wenn jemand wirklich gute argumente hat es noch ganz anders zu machen, dann imemr her damit.

2 Mal gendert, zuletzt am 22.04.2006, 23:12:18 Uhr von Richard Schubert.
22.04.2006, 23:01:01 Uhr
DirectX 10
Mr.DX Offline
ZFX'ler


Registriert seit:
01.08.2002

Bayern
297101048
Re: Komplette MatheBibliothekNach oben.
Sagt mal, habt ihr in eurere Mathe-Bib eine Möglichkeit, Nullstellen beliebig großer Polynome zu berechnen? Da würde mich mal interessieren, wie ihr das macht. Denn irgendwann brauche ich für meinen Raytracer vermutlich mal diese NS von großen Polynomen.
30.04.2006, 10:33:55 Uhr
dv Offline
ZFX'ler


Registriert seit:
15.09.2002

Österreich
89159988
Re: Komplette MatheBibliothekNach oben.
Ich habe grade versucht, mir die Lib zu holen, aber auf der Seite gibts nur uralte Builds, und mit keiner Zeile wird erwähnt, dass man die SVN-Version holen sollte (dessen Zugangsdaten wieder irgendwo versteckt sind). Wie soll man da an die Lib rankommen können?
07.07.2006, 11:42:11 Uhr
0xdeadbeef
ChrisFehn3 Offline
ZFX'ler


Registriert seit:
16.03.2003

Nordrhein-Westfalen
191519327 larsmilz@hotmail.com
Re: Komplette MatheBibliothekNach oben.
Wie schon im ZFX Channel gesagt: http://svn.zfx.info/mathlib/

MFG Lars

1 Mal gendert, zuletzt am 07.07.2006, 11:45:39 Uhr von ChrisFehn3.
07.07.2006, 11:45:08 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