Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Sep 04, 2025 00:15

Foren-Übersicht » Programmierung » Mathematik-Forum
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi Nov 10, 2010 23:28 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
Hi!

Ich beschäftige mich seit geraumer Zeit damit mir in Lazarus (FreePascal) eine Unit zu schreiben, in der wichtige mathematische Funktionen drin sind. Mittlerweile ist die Unit auf gestandene 2300 Zeilen angewachsen und umfasst unteranderem auch Code für Matrizen und Quaternions, nach denen hier hin und wieder gefragt wird.
Ich hatte mich eben gerade im IRC mit Horazont kurz unterhalten, ob und wie ich das hier reinstellen soll. In meinem Gedanken schwebt ein kleiner Artikel, allerdings habe ich bisher noch nie was in die Richtung geschrieben und hab da auch keine Ahnung von. Der Inhalt würde sich auf Folgendes stützen:

TransformationsMatrizen inklusive Inverse - Also Matrizen die man verwendet um Dinge im Raum auszurichten, passend dazu die inversen um diese Ausrichtung auch zurückrechnen zu können. Damit lassen sich wunderbar Kameras realisieren, oder Objekte die aneinander hängen.
Projektionsmatrizen inklusive Inverse - Diese sind für die Umrechnung der 3D Geometrie auf den Bildschirm verantwortlich. Am häufigsten verwendet wird die perspektivische Projektion. Passend dazu natürlich auch die Matrix um die Daten vom Bildschirm anhand des Tiefenpuffers wieder zurück zurechnen. Die Funktionen orientieren sich bei den Parametern an ihren Vorbildern von OpenGl, also glFrustum() und gluPerspective(). Die Inversen Funktionen verwenden die gleichen Parameterlisten. Nützlich ist das zum Beispiel für ShadowMaps und evtl. auch noch einige andere Effekte.

Das eigentlich Interessante daran ist, dass man dadurch die Matrizen in einem Array abgelegt hat und sie so für OpenGl 3.x und 4.x leicht verwendbar sind, da man dort ja den Matrixhaufen selbst verwalten muss. Für OpenGl 2.x hab ich das schon getestet und läuft ganz gut. Auch hab ich die Matrizen mit ihren Inversen multipliziert um zu sehen, ob auch tatsächlich eine Identitätsmatrix entsteht. Die Funktionen sind an sich nicht Sprachabhängig, da ja nur eine Matrix gebildet werden kann. Es solte also kein Problem geben, dass für mehrere Sprachen anzubieten.

Also wer Ideen hat, wie man das der Community am besten zu kommen lassen kann: Hier posten bitte!

Schon einmal vielen Dank im Vorraus!

Sellmann.

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 11, 2010 01:51 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Ich würde vorschlagen, dass du einfach anfängst den Artikel zu schreiben. Am besten erstmal offline.
Dann schickst du ihn dem Team, das Team nimmt sich dann Zeit und liest ihn Korrektur und dann wird er veröffentlicht.
Soweit grob der Ablauf.

Dann noch eine inhaltliche Anmerkung:
Auch wenn du auf das Array hinweist: Rechne bitte mit Matrizen weil es deutlich sauberer ist als mit Arrays zu arbeiten.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 11, 2010 10:05 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Ich hatte mir auch schon länger vorgenommen mal einen großen Mathe-Artikel zu schreiben in dem alles vernünftig erklärt wird. Aber es scheitert wie immer einfach an der Zeit. ;)

Was deine Bibliothek angeht, ggf. orientierst du dich an meinem CoolMath (für C++)
viewtopic.php?f=13&t=9296
(im positiven wie im negativen Sinne...das Ding ist sicher nicht perfekt ;) )

Tak2004 hat vor längerer Zeit schon mal einen Artikel angefangen, ggf. kannst du darauf aufbauen:
http://wiki.delphigl.com/index.php/Tuto ... re_Algebra
Allerdings finde ich sein Klassensystem nicht sonderlich schön. So enthält z.B. die 4x4 Matrix zusätzlich eine 3x3 Matrix mit der NormalMatrix. Ich finde es eigentlich immer gut wenn eine Matrix wirklich nur aus den 16 floats besteht, dann kann man sie einfacher an OpenGL übergeben und es gibt auch einige andere Fälle wo ein simpler Cast zu einem float-Pointer hilfreich ist.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 11, 2010 15:19 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Hmmm... ich könnte mir folgendes Vorstellen:

1. einen Artikel, welcher gleichzeitig als Doku für deine Lib funktioniert. In dem ist beschrieben was die Funktionen können und verlinkt auf Themen wo man sowas gebrauchen kann. Ideal fürs Wiki.

2. Deine Lib als Code für diverse Sprachen (*.pas, *.h/*.cpp, *.jar)
Die verschiedenen Versionen werden im Code verlinkt. Wir hatten da vor geraumer Zeit mal angefangen die Code Sampels auch übers Wiki verfügbar zu machen. Das System steht, aber es fehlt an Motivation das Bestehende zu übertragen. Neue Sachen kann man aber direkt aufnehmen.

Den Artikel würde ich direkt online im Wiki erstellen. Bei den Tutorials haben wir als Team gern vorher einen Blick drauf, aber bei einem solchen Artikel ist es nicht nötig und auch schneller wenn die Mathe Gurus hier direkt einen blick drauf werfen können. Man muss allerdings damit klar kommen, dass andere den eigenen Text verändern. ;)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 11, 2010 16:53 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Coolcat hat geschrieben:
Tak2004 hat vor längerer Zeit schon mal einen Artikel angefangen, ggf. kannst du darauf aufbauen:
http://wiki.delphigl.com/index.php/Tuto ... re_Algebra
Allerdings finde ich sein Klassensystem nicht sonderlich schön. So enthält z.B. die 4x4 Matrix zusätzlich eine 3x3 Matrix mit der NormalMatrix. Ich finde es eigentlich immer gut wenn eine Matrix wirklich nur aus den 16 floats besteht, dann kann man sie einfacher an OpenGL übergeben und es gibt auch einige andere Fälle wo ein simpler Cast zu einem float-Pointer hilfreich ist.

Hehe, das war ein ungewollter commit als ich mit OpenGL3 und 4 rum gespielt hab, der ist mittlerweile rückgängig gemacht worden.
Das viel mir erst auf, als wir auf Arbeit keine 64Byte sondern 100Bytes über das Netz gesendet haben.
Meine Klassen sind template basiert und daher recht weit von den im Artikel entfernt und ich bin noch nicht ganz mit zufrieden, da ich template spezialisierungen für 2x2,3x3 und 4x4 machen musste, sowie nicht auf die Vector klasse aufbaue und mir somit viel arbeit bei sse basiertem rechnen habe.

Im Artikel fehlen mir noch 1-2 dinge im Matrizen Bereich und Quaternion fehlt komplett.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 11, 2010 17:18 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
Also ich hab mir jetzt die Editierhilfe durchgelesen, bin aber trotzdem noch nicht dahinter gestiegen, wie man nun einen neuen Artikel im Wiki erzeugt. Außerdem würd ich gerne nen Vorschlag haben wie man das nennen kann. Ein Kind braucht ja für gewöhnlich einen Namen. Also es geht halt weniger um die Lib, die ich geschrieben habe, sondern viel mehr um die Funktionalität, die man durch die Matrizen bekommt und wie man sie erstellt/anwendet. Sozusagen eine Erweiterungen der Standard-Matrizen die hier vorgestellt werden für verschieben, skalieren, rotieren.

Edit: Vielleicht wäre das auch was für die Tutorial-Ecke, dann könnte ich zumindest das für die Kamera komplett abwickeln.

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Nov 11, 2010 17:42 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Du suchst einsfach nach deinem Wunschnamen. Auf der Ergebnisseite taucht der Link mit dem Namen dann in Rot auf, du klickst drauf und kannst editieren, vorrausgesetzt du bist im Wiki eingeloggt.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Mathematik-Forum


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]