Ich bin eben trotz der vielen nebenher laufenden Projekte daran eine Mathematik-Libary für .NET( Später möglicherweisse auch für Win32( Delphi, C++ ) zu schreiben, die bei den anderen Projekten erheblich die Arbeit erleichtern soll( Komplett alle relevanten .NET Typen, mit allerhand möglichen Operator-Overloads; Paar Tausend Zeilen Code ).
Im Moment sind drinnen: - Byte
- Int16
- Int32
- Int64
- Single
- Double
- Boolean
Das ganze von 2Dim zu 4 Dim.
Zwar ist es Fraglich ob jeder dieser Typen verwendet wird,
Jetzt die Frage, zu der Typen-conversion von Vector zu Vector:
Was haltet ihr für besser, implicit oder explicit??
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Registriert: Di Nov 26, 2002 22:12 Beiträge: 259 Wohnort: Dresden
Implizierte Typecasts führen meiner Meinung nach eher zu Verwirrung (Wird z.B. bei einer Typenumwandlung von Vector3* auf Vector4* nun die neue Komponente mit 1 oder 0 gefüllt?) Dasselbe Problem besteht aber auch bei expliziten Typecasts.
Du kannst ja z.B. statische Funktionen zur Umwandlung zur Verfügung stellen. Die sind dann auch eindeutig. Wirklich häufig benötigt man solche Umwandlungen sowieso nicht.
Im Endeffekt ist es aber Geschmackssache.
_________________ Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650
Implizierte Typecasts führen meiner Meinung nach eher zu Verwirrung (Wird z.B. bei einer Typenumwandlung von Vector3* auf Vector4* nun die neue Komponente mit 1 oder 0 gefüllt?) Dasselbe Problem besteht aber auch bei expliziten Typecasts. Du kannst ja z.B. statische Funktionen zur Umwandlung zur Verfügung stellen. Die sind dann auch eindeutig. Wirklich häufig benötigt man solche Umwandlungen sowieso nicht. Im Endeffekt ist es aber Geschmackssache.
Die überlegung mit der übersicht hatte ich auch. Ich werde wohl die Typcasts sowie die Statischen Funktionen zu Verfügung stellen.
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Ich hoffe ihr habt Zeit die erste Version zu Testen, b.z.w sie euch etwas anzusehen!
Was fehlt ist:
- Typconversion von z.b. "Single" zu "Double", die Conversion von Dimension zu Dimension ist bereits enthalten
- Etwas anderes wie Vektoren
- Bisher wurden nur bei bools die zweite Möglichkeit der Typenconversion eingefügt( ToVector2b, ToVector3b,...)
Was mich besonderst interessiert, ist was noch wichtig ist( z.b. eine Normalize Funktion?!?! ), zu solchen Sachen sollte am besten noch gleich die Formel mitgeliefert werden!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Registriert: Di Nov 26, 2002 22:12 Beiträge: 259 Wohnort: Dresden
Aus meiner Sicht fehlen noch die Funktionen, die die ganze Klasse überhaupt sinnvoll macht . Bisher sehen die Klassen so aus als wären sie nicht zum Rechnen gedacht. Was ist mit Vektorkreuzprodukt, Skalarprodukt, Multiplikation mit einem Skalar usw? Oder habe ich die übersehen?.
In meiner eigenen Matheunit nutze ich zudem die Möglichkeit Operatoren zu überladen. Das macht den Code wesentlich übersichtlicher und vor allem bei Vektoren und Matrizen wirklich Sinn.
_________________ Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650
Aus meiner Sicht fehlen noch die Funktionen, die die ganze Klasse überhaupt sinnvoll macht . Bisher sehen die Klassen so aus als wären sie nicht zum Rechnen gedacht. Was ist mit Vektorkreuzprodukt, Skalarprodukt, Multiplikation mit einem Skalar usw? Oder habe ich die übersehen?. In meiner eigenen Matheunit nutze ich zudem die Möglichkeit Operatoren zu überladen. Das macht den Code wesentlich übersichtlicher und vor allem bei Vektoren und Matrizen wirklich Sinn.
Sind eigentlich garkeine Klassen Endlich mal ein Hilfreicher Kommentar!
Operatorenübberladungen sind für jeden Typ(!!!) soviel drin wie möglich.
Vektorkreuzprodukt, Skalarprodukt, Multiplikation mit einem Skalar werde ich wohl noch einbauen als Funktion.
Ehrlich gesagt expandiert das ganze atm Exp. ein einziger Vektor ist atm 300 - 400 Zeilen lang.
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Ich wuerde mir ja die Arbeit sparen eine Vektor Klasse fuer x moegliche Typen zu schreiben und statt dessen eine Generic Vektor Klasse bauen
Da kannst du weder Implicit / Explicit Deklerationen reinschmeissen, noch kannst du Operatoren überladen. Als dritten Punkt ist es mehr schreibarbeit wenn du sie benutzt.
Generic Klassen gibt es trotzdem, diese sind allerdings in der Version nicht drinnen, da ich an die Armen Delphianer gedacht habe!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Allerdings stellt sich bei mir die Frage wie weit das noch richtig Performant ist, und daher für 3D Anwendungen verwendbar.
Womit wir allerdings wieder bei dem Punkt "schreibarbeit" wären.
Aber die Diskussion ist eigentlich nicht Sinnvoll, immerhin habe ich ja nur die Schreibarbeit.
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Registriert: Mi Aug 17, 2005 13:19 Beiträge: 98 Wohnort: Jahnsdorf
Wenn Du schon so eine Vielzahl an Typen benutzt, wäre auch zu überlegen, den Extended-Typ anzubieten (falls .NET zu diesem Wunderwerk der Technik überhaupt fähig ist).
Operator-Überladung sollte eigentlich keinen großen Performance-Nachteil liefern, genauso wenig wie implizite Typ-Konvertierung, wenn diese nicht auf Variant-Basis geschieht ...
Soviel aber nur am Rande; eine Nutzung einer .NET-Math-Lib steht bei mir außer Diskussion, da ich native code und dabei auch bleiben werde ...
Ich möchte an dieser Stelle anmerken, dass ich es sehr gut finde, dass die Anzahl der aus deinen Posts merklich zurückgeht
Das liegt daran das ich inzwischen es so oft gehört habe, das ich mir meinen Post extra durchlese und gucke das keine drin sind
Zu BenBE: Ich weiss es nicht, aber die Methode von Lars sieht auf den ersten Blick so aus als wäre sie nicht für 3D geeignet.
Das du kein .NET benutzt kann ich zwar nicht verstehen( Vielleicht liegt das einfach daran das sich die Leute damit nicht genug beschäftigen ), aber dank dem Reflector lässt sich aus dem Code zimlich schnell Delphi Code machen.
Dann müsste sich nur noch jemand bereit erklären das ganze für Native ebene umzusetzen, sprich die .Net Befehle rausschmeissen und durch ( IMHO noch nicht vorhandene ) Native Befehle ersetzen.
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.