Einen Punkt auf eine Ebene projezieren
-
Hi, ich rätsel nun schon den halben Nachmittag, wie man einen Punkt im Raum auf eine beliebige Ebene (durch einen Punkt und Normalenvektor) mit der Zentralperspektive projektieren kann, und dann auch die X und Y Koordinaten des abgebildeten Punktes auf dieser Ebene herausfindet... Sprich also: wie man 3D-Punkte aufm Bildschirm darstellen kann.
Ich hab bereits versucht mir das Vertexwahn Tutorial durchzulesen, aber da Blick ich nicht durch
Wär schön wenn mir jemand helfen könnte.
-
Punkt gegeben durch P(x;y;z) und normale durch N(x;y;z), Ebene gegeben durch Einen Punkt(x;y;z) und zwei Richtungsvektoren (x;y;z), die sie aufspannen.
Ebene: P_e + a * R_1 + b * R_2 Strahl: P_s + c * N
Gleichsetzen, LGS lösen. Da sind drei unbekannte (a, b, c) und drei Gleichungen, also lösbar.
-
Jah gut, soweit komm ich auch noch, ich krieg auch den Punkt im 3D-Raum raus, wo sich die Gerade mit der Ebene schneidet, aber ich krieg diesen Punkt auf der Ebene nicht in 2D-Koordinaten auf selbiger Ebene umgewandelt
-
Sprich also: wie man 3D-Punkte aufm Bildschirm darstellen kann.
ein strahl vom projektionszentrum durch den punkt schneidet die projektionsebene.
durch gleichsetzen erhaelst du die 2d-koordinaten a,b in abhaengigkeit der aufspannenden basisvektoren r1,r2.
da die ebene deinen bildschirm darstellt sind deren basisvektoren orthogonal und sinnvoll skaliert zu waehlen, so dass a,b auf pixelkoordinaten mappen.alternativ definieren projektionszentrum und ebene die basisvektoren eines koordinatensystems in das du durch die entsprechende matrix transformieren kannst. der ebenenschnittpunkt vereinfacht sich so auf den zweidimensionalen fall, also eine einfache division durch z.