2D / 3D Räume in Programmen
Verfasst: Montag 22. September 2008, 01:05
Hallo,
Ich behaupte einfach mal, ziemlich viele Programme benötigen 2 oder 3D Räume / Koordinatensysteme.
Ich bekomme es allerdings nicht auf die Reihe, bei der Planung eines Projektes einen solchen Raum "richtig" einzuplanen.
Ganz allgemein könnte man natürlich Listen und/oder Tupel kreuzfidel verschachteln und die entsprechenden Indizes als Koordinatenpunkte verwenden. Oder auch ein Dict / Shelve Objekt mit Tupeln als Keys verwenden.
Aber mit sowas baut man sich quadratische / tertiäre (<- ist das der richtige Ausdruck?) Algorithmen und bei Dingen, die für alle Objekte innerhalb des Koordinatensystem gelten sollen, braucht man meist sowieso wieder andere Container, die zb alle Objekte der Sorte xy zusammenfassen.
Andererseits könnte man dann das Koordinatensystem auch gleich ganz weglassen und es nur imaginär behandeln. Sprich, ein Objekt hat eine festgelegte Position, wenn es die zb wechseln will, schnappt man sich einen beliebigen Algorithmus, rechnet alles wichtige aus und Ende. Dann wird aber die Interaktion von Objekten wiederrum komplizierter, vermute ich.
Das wird alles recht schnell ineffizient. Mit 20 ** 3 (8000) Punkten wird jawohl kein komplexes 3D Spiel auskommen und halbwegs Menschen/Autos/Schiffe/etc. darstellen können, die auch noch richtig nach der Physik Engine agieren? Wie funktioniert eigentlich die Mathematik hinter sowas? Wie kann man so ein komplexes Objekt eigentlich zb drehen, (hier vermute ich allerdings Trigonometrie), oder für jenes komplexe Kollisionsabfragen durchführen? (Anmerkung: Ich plane natürlich nicht ähnliches zu realisieren, aber allein solche Dinge erscheinen mir einfach so rechenlastig, so "fein" und komplex)
Wie sollte man Objekte mithilfe einer "Physik Engine" miteinander agieren lassen? Wie überhaupt Physik in ein Programm hereinbringen? Und vorallem wo sollte man sie einsetzen? Als ein eigenes, zentrales Objekt, das eventgesteuert alle Objektanfragen entgegenimmt? Und wie sollte man sowas anfangen?
Das klingt vermutlich etwas diffus, aber an diesem Punkt knacke ich jetzt schon ziemlich lange dran rum ohne irgendwie weiterzukommen. Google und co hab ich immer wieder versucht, kam aber nie hilfreiches bei raus - außer bei kleinen Dingen, wie 10 * 10 Felder für Tetris usw.
Danke fürs Lesen
Ich behaupte einfach mal, ziemlich viele Programme benötigen 2 oder 3D Räume / Koordinatensysteme.
Ich bekomme es allerdings nicht auf die Reihe, bei der Planung eines Projektes einen solchen Raum "richtig" einzuplanen.
Ganz allgemein könnte man natürlich Listen und/oder Tupel kreuzfidel verschachteln und die entsprechenden Indizes als Koordinatenpunkte verwenden. Oder auch ein Dict / Shelve Objekt mit Tupeln als Keys verwenden.
Aber mit sowas baut man sich quadratische / tertiäre (<- ist das der richtige Ausdruck?) Algorithmen und bei Dingen, die für alle Objekte innerhalb des Koordinatensystem gelten sollen, braucht man meist sowieso wieder andere Container, die zb alle Objekte der Sorte xy zusammenfassen.
Andererseits könnte man dann das Koordinatensystem auch gleich ganz weglassen und es nur imaginär behandeln. Sprich, ein Objekt hat eine festgelegte Position, wenn es die zb wechseln will, schnappt man sich einen beliebigen Algorithmus, rechnet alles wichtige aus und Ende. Dann wird aber die Interaktion von Objekten wiederrum komplizierter, vermute ich.
Das wird alles recht schnell ineffizient. Mit 20 ** 3 (8000) Punkten wird jawohl kein komplexes 3D Spiel auskommen und halbwegs Menschen/Autos/Schiffe/etc. darstellen können, die auch noch richtig nach der Physik Engine agieren? Wie funktioniert eigentlich die Mathematik hinter sowas? Wie kann man so ein komplexes Objekt eigentlich zb drehen, (hier vermute ich allerdings Trigonometrie), oder für jenes komplexe Kollisionsabfragen durchführen? (Anmerkung: Ich plane natürlich nicht ähnliches zu realisieren, aber allein solche Dinge erscheinen mir einfach so rechenlastig, so "fein" und komplex)
Wie sollte man Objekte mithilfe einer "Physik Engine" miteinander agieren lassen? Wie überhaupt Physik in ein Programm hereinbringen? Und vorallem wo sollte man sie einsetzen? Als ein eigenes, zentrales Objekt, das eventgesteuert alle Objektanfragen entgegenimmt? Und wie sollte man sowas anfangen?
Das klingt vermutlich etwas diffus, aber an diesem Punkt knacke ich jetzt schon ziemlich lange dran rum ohne irgendwie weiterzukommen. Google und co hab ich immer wieder versucht, kam aber nie hilfreiches bei raus - außer bei kleinen Dingen, wie 10 * 10 Felder für Tetris usw.
Danke fürs Lesen