Homogene Koordinaten GeoGebra CAS

Grundlagen Überblick
Ein Element v ∈R[sup]3[/sup] kann sowohl als Punkt im Raum als auch als Richtungsvektor interpretiert werden. Das Konzept [b]homogene Koordinaten[/b] stellt beide Objekte auch unterschiedlich dar als[br]Richtungsvektor [math]\vec{v}=\left(\begin{matrix}v_{x}\\v_y\\v_z\\\textcolor{red}{0}\end{matrix}\right) [/math] oder Punkt im Raum [math]V=\left(\begin{matrix}v_{x}\\v_y\\v_z\\\textcolor{red}{1}\end{matrix}\right) [/math] [br][br]Mit A ∈ R[sup]3×3[/sup] ,eine Matrix, die eine lineare geometrische Transformation beschreibt, und v ∈ R[sup]3[/sup], ein Vektor lässt sich eine affine Transformation angeben[br][math]\vec{x}\mapsto A\cdot\vec{x}+\vec{v}[/math].[br]Sie ist die Verknüpfung einer linearen Transformation mit einer Verschiebung. Jede affine Transformation lässt sich in homogenen Koordinaten durch eine Matrix der Form[br][math]\left(\begin{matrix}\begin{matrix}\; &\;&\; \\ \;&A&\; \\ \;&\;&\; \end{matrix} & \begin{matrix}v_x\\v_y\\v_z\end{matrix}\\ \begin{matrix}0&0&0\end{matrix} &\textcolor{red}{1}\end{matrix}\right)[/math][br]darstellen. Insbesondere lassen sich Translationen/Verschiebungen (durch einen Vektor) in Matrixform schreiben. [br][br][url=http://www.math.kit.edu/iag2/~globke/media/koordinaten.pdf][icon]/images/ggb/toolbar/mode_text.png[/icon]http://www.math.kit.edu/iag2/~globke/media/koordinaten.pdf[br][/url]
Beispielaufgabe
[size=85]Die Ecken eines Koffers werden beschrieben durch die homogene Koordinaten:[br][br][math] {K_{1}=(0,0,0,1)^{\prime}, \quad K_{2}=(0,0,1,1)^{\prime}, \quad K_{3}=(-4,0,1,1)^{\prime}, \quad K_{4}=(-4 ; 0,0,1)^{\prime}} \\[br]{K_{5}=(0,2,0,1)^{\prime}, \quad K_{6}=(-4,2,0,1)^{\prime}, \quad K_{7}=(-4,2,1,1)^{\prime}, \quad K_{8}=(0,2,1,1)^{\prime}[br][/math][br][br]Der Deckel des Koffers wird begrenzt durch die Ecken [math] \( K_{2}, K_{3}, K_{7} \) ,\( K_{8} \)[/math]. Der Griff des Koffers befindet sich auf der Fläche mit der nach außen gerichteten Flächennormalen [math][br]n_{G V}=(0,1,0,0)^{t}[br][/math].[br]Der Schrank wird beschrieben durch die Eckpunktkoordinaten:[br][br][math]\( S_{1}=(12,0,2,1)^{t}, \quad S_{2}=(16,0,2,1)^{t}, \quad S_{3}=(16,0,0,1)^{t}, \quad S_{1}=(12,0,0,1)^{\prime} \) \\[br]S_{5}=(12,7,2,1)^{t}, \quad S_{6}=(16,7,2,1)^{t}, \quad S_{7}=(16,7,0,1)^{t}, \quad S_{8}=(12 ; 7,0,1)^{t}[br][/math][br][br]Geben Sie eine Transformationsmatrix M[sub]Gesamt[/sub] an, die den Koffer auf den Schrank ablegt, so daß die Fläche, auf der sich der Koffergriff befindet, die Flächennormale [math][br]n_{G N}=(0,0,1,0)^{t}[br][/math] erhält und der Kofferdeckel nach oben, in Richtung der positiven y- Achse, weist.[/size][br][br]Ich trage die K[sub]i[/sub] und S[sub]i[/sub] in GGB als R3 Vektoren ein - damit hab ich erstmal ein Bild mit dem ich arbeiten kann.
Ausgangs-Scene (Koordinaten Ki und Si eingetragen)
Koffer(rot) , Kofferdeckel(grün), Griff (G0), Schank(Wand), n Vektorpfeil in Griffrichtung[br]Drehung Rx Drehung Ry Verschiebung u_T
Vorbereitung zur Verarbeitung/Darstellung homogener Koordinaten
[b]Homogene Koordinaten[/b] ([math]\in R^4[/math]) [b]müssen als Liste dargestellt werden! [/b][br][br]Transfer Punkt/Vektor R[sup]3[/sup] in Liste R[sup]4[/sup] und umgekehrt[br][list][*]aus einem Punkt G[sub]0[/sub]=(-2,2,0.5) wird mit [math]\small Flatten\left(\{Vector\left(G_0\right)\}\right)[/math] eine Liste, die um die homogene Komponente zu erweitern ist [math]\small G0_H \, := Transpose(Join(Flatten(\{Vector(G_0)\}),\textcolor{red}{\{1\}}))= \, \left(\begin{array}{r}-2\\2\\0.5\\\textcolor{red}{1}\\\end{array}\right)[/math] - CAS only.[/*][*] Definiere eine Abbildungsmatrix R[sup]3[/sup]=>R[sup]4[/sup] [br][math]\scriptsize R32H:=\left(\begin{array}{rrr}1&0&0\\0&1&0\\0&0&1\\0&0&0\\\end{array}\right)[/math] mit Vektor v=(16,8,0) erhalte ich [math]v_H=\small Transpose \left(R32H \; Flatten \left(v \right) \right) =\left(\begin{array}{r}16\\8\\0\\0\\\end{array}\right) [/math] addiere {0,0,0,1} um einen homogenen Punkt zu erhalten.[/*][*]Aus R32H transponiert erhalte ich aus Homogenen KO wieder R3 Vektoren/Punkte[br][math]\scriptsize H2R3:=\;\left(\begin{array}{rrrr}1&0&0&0\\0&1&0&0\\0&0&1&0\\\end{array}\right)[/math] nehme G0[sub]H[/sub] von oben [math]\small G0_R:= \, Point \left( \left\{ H2R3 \; G0_H \right\} \right) = \, \left(-2, 2, \frac{1}{2} \right)[/math] [br]auch [math]\small G0_R: \,=Point(Flatten(Take(\; G0_H,1,3)))[/math] [br][/*][/list][br]Die Drehmatrizen R[sup]3[/sup] erstelle ich über eine User-Funktion R[sub]n[/sub](a,n1,n2,n3), a Drehwinkel, n1,n2,n3 Vektorkomponenten als Einheitsvektor ( |(n1,n2,n3)|=1) der Drehachse - die homogenen Komponeten müssen angebaut werden, z.B. Drehung -90° xAchse [br][br][math]R_x:=Transpose(Join(Transpose(Join(R_n(-90°,1,0,0),\{\{0,0,0\}\})),\{\{0,0,0,1\}\}))=[/math][math]\scriptsize \, \left(\begin{array}{rrrr}1&0&0&0\\0&0&1&0\\0&-1&0&0\\0&0&0&1\\\end{array}\right)[/math][br]Drehmatrix R[sup]3[/sup] um 4. Zeile erweitern: [math]Join(R_n(-90°,1,0,0),\{\{0,0,0\}\})[/math][math]=\scriptsize \left(\begin{array}{rrr}1&0&0\\0&0&1\\0&-1&0\\0&0&0\\\end{array}\right)[/math], transponieren und Zeile {0,0,0,1} anhängen und wieder zurück transponieren <{0,0,0,1}[sup]T[/sup] = Spalte>.[br][br]Die Translation (Verschiebung) entwickle ich aus der Einheitsmatrix R4[sub]Identity(4)[/sub], nehme nur die Zeilen 1-3 (Take) und hänge den um die homogene Komponente {1} verlängerten Verschiebevektor (S8-K1) dran:[br][math]T_k:=Transpose(Join(Take(Identity(4),1,3), \{Join(Flatten(Vector( S8-K1)),\{1\})\}))=[/math][math]\scriptsize \, \left(\begin{array}{rrrr}1&0&0&12\\0&1&0&7\\0&0&1&0\\0&0&0&1\\\end{array}\right)[/math]
Einstellungen Grafik Basic y-Achse: y-Achse vertikal (y-axis is vertical)[br][br]Erstelle eine Liste K mit den K[sub]i[/sub] (R[sup]3[/sup]-Koordinaten) des Koffers und des Griffes G0.[br]K={K1, K2, K3, K4, K5, K6, K7, K8, G0}[br]Kofferdeckel=Polygon({K2, K3, K7, K8})[br]Koffer=Prism(Kofferdeckel, 1)[br]SchrankWand=Polygon({S7, S8, S4, S3})[br]Schrank=Prism(SchankWand, 2)[br][br][table][tr][td]CAS[br](1) Erstelle Liste K[sub]H[/sub] mit K[sub]i[/sub] in homogenen Koordinaten [br](2) R[sub]n[/sub] Drehmatrizen[br](3) R[sub]x[/sub] Drehe Koffer mit -90° um x-Achse [br](4) R[sub]y[/sub] Drehe Koffer mit 180° um y-Achse [br](5) T[sub]k[/sub] Translation (Verschiebungsvektor u[sub]T[/sub]) [br](6) KB[sub]H[/sub]:=T[sub]k[/sub] R[sub]y[/sub] R[sub]x[/sub] K[sub]H[/sub]i Punkte aus Liste K[sub]H[/sub] abbilden[br][/td][td]Bilder zeichnen in Algebra Fenster[br][br][br]Koffer'_1[sub] [/sub]=Rotate(Koffer, -90°, xAxis)[br]Koffer'_2[sub] [/sub]=Rotate(Koffer'_1, 180°, yAxis)[br]Koffer'_3[sub] [/sub]=Translate(Koffer'_2, Vector(S8))[br][br][/td][/tr][/table]Bilder KB[sub]H[/sub] nach R[sup]3[/sup] konvertieren in Liste[br]KB[sub]R3[/sub]=Sequence(Point(Flatten(H2R3 KB_H(i))),i,1,k_o)[br][br] [math] M_{Gesamt}\,=\,T_k\, R_y\, R_x\,=\, \left(\begin{array}{rrrr}-1&0&0&12\\0&0&1&7\\0&1&0&0\\0&0&0&1\\\end{array}\right) [/math]

Information: Homogene Koordinaten GeoGebra CAS