Vorausgesetzt, dass Sie die Koordinaten eines beliebigen Punktes in der Ebene finden wollen, in Bezug auf die Koordinaten (u, v) ...
Wenn der Punkt [x0, y0, z0] in der Ebene liegt, dann wissen wir, dass
dot([a,b,c],[x0,y0,z0]) = -d
Wo Punkt das Skalarprodukt zwischen zwei Vektoren ist. Dies ist einfach das Umschreiben der Ebenengleichung.
Der Trick besteht darin, zwei Vektoren zu finden, die den planaren Unterraum überspannen. Um dies zu tun, wählen wir einen zufälligen Vektor der Länge 3. Nenne es V0. Ich rufe den planaren Normalvektor an
Als nächstes verwenden Sie das Kreuzprodukt des normalen Vektors N mit V0. Dieser Vektor wird senkrecht zum normalen Vektor sein, außer wir waren extrem unglücklich und N und V0 waren kollinear. In diesem Fall wählen Sie einfach einen anderen Zufallsvektor V0. Wir können sagen, ob die beiden Vektoren kollinear waren, weil dann V1 der Vektor [0 0 0] ist.
Also, wenn V1 nicht der Nullvektor ist, dann dividiere jedes Element durch die Norm von V1. Die Norm eines Vektors ist einfach die Quadratwurzel der Summe der Quadrate der Elemente.
Als nächstes wählen wir einen zweiten Vektor V2, der sowohl zu N als auch zu V1 orthogonal ist. Wiederum macht dies ein Vektor-Kreuzprodukt trivial. Normalisieren Sie diesen Vektor, um auch die Längeneinheit zu haben. (Da wir jetzt wissen, dass V1 ein Vektor mit Einheitsnorm ist, könnten wir einfach durch die Norm (N) geteilt werden.
)
V2 = cross(N,V1)
V2 = V2/norm(V2)
jeder Punkt in der Ebene kann nun trivially als Funktion von (u, v), wie folgt beschrieben werden:
[x0,y0,z0] + u*V1 + v*V2
Wenn beispielsweise (u, v) = (0, 0), klar, wir bekommen [x0, y0, z0] zurück, also können wir uns diesen Punkt als "Ursprung" in (u, v) -Koordinaten vorstellen. Genauso können wir Dinge wie u und v von jedem Punkt [x, y, z], der bekanntermaßen in der Ebene liegt, wiederherstellen, oder wir können die normale Projektion für einen Punkt finden, der nicht in der Ebene liegt projiziert in diese Ebene.
Sprechen Sie über generische Koordinaten (u, v)? Oder möchten Sie einen Punkt im Welt-Raum auf Texturkoordinaten abbilden, die auf einem Dreieck definiert sind? – sbabbi
Ich möchte die Ebene texturieren – tigrou