Vektorrotation v=(x,y,z,w), Bedeutung von "w" für v'=R*v
-
hallo.
ich bin grad verwirrt. wenn ich einen vektor transformieren will, z.b. rotieren, dann brauch ich doch die 4. coordinate "w" nur als dummy, oder? bei directx gibts aber drei verschiedene funktionen zum transformieren:
D3DXVec3Transform D3DXVec3TransformCoord D3DXVec3TransformNormal
wobei die erste vier coordinaten will, die anderen drei.
Meiner Meinung nach ist eine Rotation sowieso orthogonal (die länge des vektors ändert sich nicht), also was soll das alles?Und was mache ich mit dem "w"? ist irgendwie nirgends erklärt (hab grad DX-docu gewälzt).
danke für jeden tip!
-
Gehirnmann schrieb:
Meiner Meinung nach ist eine Rotation sowieso orthogonal (die länge des vektors ändert sich nicht), also was soll das alles? [...] danke für jeden tip!
Eine Rptation ist ein Spezialfall einer Transformation. So als Tip.
Bye, TGGC (NP Intelligenz)
-
hi
Die w-Komponente (normalerweise w = 1) dient der Translation von Objekten. Für die Rotation ist sie also nicht weiter wichtig.
v' = v * M (Vektoren werden in DX von links an eine Matrix multipliziert)
sieht so aus:
v'.x = v.x * m11 + v.y * m21 + v.z * m31 + v.w * m41
v'.y = v.x * m12 + v.y * m22 + v.z * m32 + v.w * m42
v'.z = v.x * m13 + v.y * m23 + v.z * m33 + v.w * m43
v'.w = v.x * m14 + v.y * m24 + v.z * m34 + v.w * m44Matrix M hat die Form:
m11 m12 m13 m14
m21 m22 m23 m24
m31 m32 m33 m34
m41 m42 m43 m44m41, m42, m43 halten also die x, y und z Werte, um die ein Objekt nach der Transformation durch die obere linke 3*3 matrix noch verschoben wird.
hoffe trägt zur Klärung bei!!
-
> Eine Rptation ist ein Spezialfall einer Transformation
was ist den an einer Rotation so speziell?
> Vektoren werden in DX von links an eine Matrix multipliziert
irgendwo hört der spaß auch wieder auf...
> dann brauch ich doch die 4. coordinate "w" nur als dummy, oder?
w ist einfach die Homogene Koordinate um Translationen mithilfe von Matrizen beschreiben zu können
> D3DXVec3Transform
Transforms vector (x, y, z, 1) by a given matrix.
(Erwartet einen 4D Vektor/Punkt - Transformiert mit der Übergebenen Matrix - liefert Ergebnis zurück)> D3DXVec3TransformCoord
Transforms a 3-D vector by a given matrix, projecting the result back into w = 1.
(Transformiert einen 3D Vektor mit einer Gegebenen Matrix - liefert Ergebnis zurück - damit läßt sich nur schwer eine Translation im R^3 beschreiben - spart aber Rechenoperationen, wenn man keine Verschiebung hat)> D3DXVec3TransformNormal
This function transforms the vector normal (x, y, z, 0) of the vector, pV, by the matrix, pM.
(Für Normalen spielt eine Translation keine wichtige Rolle - daher könnte man sich diese praktisch sparren -> weniger Rechenschritte -> schneller)Kenn mich mit DX net so besonders gut aus - vielleicht habe ich ja etwas falsch interpretiert - aber so würde es sinn ergeben...
-
w kann auch als Skalierungsfaktor für die Translation missbraucht werden:
Nehmen wir folgende Transformationsmatrix (die einen 2D Punkt) transformiert an:
\left( \begin{array}{111} 0 & -1 & 5 \\ 1 & 0 & 2,5 \\ 0 & 0 & w \\ \end{array} \right)Diese Matrix Dreht einen Punkt um 90° und verschiebt ihn um 5*w und 2.5*w
Winkel verändern sich beim Skalieren nicht - nur die Längen von Srecken
Hast du z. B. einen Würfel und willst diesen nur "halb so groß" darstellen gibst du für w einfach 1/2 an...
Das dumme ist das immer alle drei Achsen skaliert werden und man sich nicht nur auf eine einzige Beschränken kann
-
Vertexwahn schrieb:
Eine Rptation ist ein Spezialfall einer Transformation
was ist den an einer Rotation so speziell?
a) Es existiert ein Punkt P der auf sich selbst abgebildet wird
b) Sei A' der Bildpunkt von A und B' der Bildpunkt von B, sowie d der Abstand von A nach B, so ist der Abstand von A' nach B' d
c) Sei A' der Bildpunkt von A und B' der Bildpunkt von B und C' der Bildpunkt von C, sowie w der von ABC eingeschlossene Winkel, so ist der von ABC eingeschlossene Winkel wBye, TGGC (NP Intelligenz)
-
> a) Es existiert ein Punkt P der auf sich selbst abgebildet wird
Es existiert sogar eine Gerade, die auf sich selbst abgebildet wird (oh!)
vielleicht kennt hier ja der ein oder andere das Fußballbeispiel - wenn man einen Fußball rotiert (um x,y,z Achse), dann gibt es immer zwei Punkte die nach der Drehung an der selben stelle befinden wie vor der Drehung
-
TGGC schrieb:
sowie w der von ABC eingeschlossene Winkel, so ist der von ABC eingeschlossene Winkel w
ROFL
Ach nee!?!?