3D-Koordinaten in 2D umrechnen
-
Wie der Titel schon sagt, versuche ich mit einfachsten Mitteln (Java 2D-API) Objekte, welche mittels 3D-Koordinaten vorgegeben sind, räumlich darzustellen, dazu will ich diese in die Ebene umrechnen. Nun bin ich absoluter Neuling auf diesem Gebiet und bräuchte Infos, wie ich dies machen könnte. Gibt es dazu gute Tuts (hab nichts gefunden
) im Internet, die nicht alzu komplex sind ? Ich habe zwar schon mit meinem beschränktem Wissen ein wenig improvisiert, aber ich bräuchte Infos, wie ich sowas effizient berechnen kann. Bin für jede Hilfe sehr dankbar.
-
Einfach mittels "ähnlichen Dreiecken" Punkte auf eine Ebene projezieren, die einen beliebigen Abstand zum Auge hat. Macht sowas wie x2d= x3d / z3d * konstante.
Bye, TGGC (Der Held ist zurück)
-
hallo.
ich weis net ob es dazu java-funktionen gibt aber um 3d koordinaten aufm 2dscreen darzustellen benötigst du folgende formel:
für X: x=x/z
für Y: y=y/z
(/ steht für division)
hoffe konte dir helfen.
MFG
-
ich habe auch mal so etwas geschrieben, allerdings nicht in Java. Zum Umrechnen habe ich diese Makros geschrieben:
#define Fokus 200 #define TransformX(x,z) (-(x*Fokus/(z+Fokus))+400) #define TransformY(y,z) (-(y*Fokus/(z+Fokus))+300)
für 400 musst du die halbe Bildschirmbreite und für 300 die halbe Bildschirmhöhe einsetzen. Die Formel kommt übrigens wie TGGC gesagt hat von ähnlichen Dreiecken und Strahlensatz. Fokus ist der Abstand zum Bildschirm, vielleicht muss du diese Zahl etwas verändern.
-
Danke auf jeden Fall schonmal, aber gibt es im Internet dazu nicht noch ein paar tiefergehende Infos, habe wie schon gesagt nichts gefunden und will euch nicht mit unnötigen Anfängerfragen quälen ? Von Interesse wäre nämlich für mich dann auch die freie Rotation des Beobachters um die Körper und das zoomen.
-
-> Microsoft DirectX 9 SDK Dokumentation -> Projektionsmatrix
-
Ja, dazu gibts auch im Netz Infos.
Bye, TGGC (Der Held ist zurück)