Cam Carpet Projektion und Spotlight Projektion

Konstruieren von 3D-Cam-Carpets mit Projektionsmatrizen
Abbilden eines senkrecht stehenden Bildes per Parallelprojektion:[br]Gerade p[sub]B[/sub] in Projektions-Richtung v=(v1,v2,v3) trifft Bildpunkt B=(b1,b2,b3) und projeziert B auf Teppich-Ebene z=0. Allgemeine Betrachtung in homogenen Koordinaten [url=https://www.geogebra.org/m/n4cf4sdf]ParallelProjectionConstructionCAS[/url][math]\nearrow[/math].[br][br][table][tr][td][math] p_{B}(t) \, := \small \left( \begin{array}{r}b1\\b2\\ b3\\ \end{array} \right) + t\; \left( \begin{array}{r}v1\\v2\\ v3\\ \end{array} \right)[/math][br][br][math] p'(B)= \left( \begin{array}{r}\frac{b1 \; v3 - b3 \; v1}{v3}\\\frac{b2 \; v3 - b3 \; v2}{v3}\\ 0\\ \end{array} \right) = \left( \begin{array}{r}b1 \; - b3 \; \frac{ v1}{v3}\\ b2 \; - b3 \; \frac{v2}{v3}\\ 0\\ \end{array} \right) [/math] ===>[br][math] \small p'(B)= \left(\begin{array}{rrr}1&0&-\frac{v1}{v3}\\0&1&-\frac{v2}{v3}\\0&0&0\\\end{array}\right) \left( \begin{array}{r}b1\\b2\\ b3\\ \end{array} \right) [/math] [br][br][math]\left(\begin{array}{rrr}1&0&\frac{-22}{20}\\0&1&\frac{-27}{20}\\0&0&0\\\end{array}\right) \; \left(\begin{array}{r}2.5\\0\\5.25\\\end{array}\right) = \left(\begin{array}{r}-3.28\\-7.09\\0\\\end{array}\right)[/math][br][br][/td][td][i]p'(B) ===> b3 + t v3 = 0 ===> t=-b3/v3[/i][br][br][img]https://www.geogebra.org/resource/u7rkqys6/M4VXNXrm7jjPOcBN/material-u7rkqys6.png[/img][/td][/tr][/table][br]Die Zentral-Projektion des CamCarpet Schatten-Bildes (Projektionsvektor von Kamera zu den Bildpunkten) lässt sich in homogenen Koordinaten in einer Matrix abhandeln. Details zu dem Verfahren in App [url=https://www.geogebra.org/m/xwj3hnda]Central & Parallel Projection Matrix construction[/url][math]\nearrow[/math].[br]Beispiel: [br]Zentral-Projektion Matrix für Projektionsebene z=0, [br]CAMvektor=(22,27,20), Urbildvektor (-2.5,0,5.25) in homogenen Koordinaten R[sup]4[/sup] [br]ZP:=ZP_H(22, 27,20, 0, 0, 1,0)[br][math]ZP \, := \, \left(\begin{array}{rrrr}-20&0&22&0\\0&-20&27&0\\0&0&0&0\\0&0&1&-20\\\end{array}\right)[/math][math]\Longrightarrow ZP \left(\begin{array}{r}-2.5\\0\\5.25\\1\\\end{array}\right)=\left(\begin{array}{r}65.5\\141.75\\0\\-14.75\\\end{array}\right) \frac{1}{-14.75} = \left(\begin{array}{r}\textcolor{red}{-4.44}\\\textcolor{red}{-9.61}\\\textcolor{red}{0}\\1\\\end{array}\right)[/math][br][br]Eine Überführung in R³ würde eine Funktion (CAS) darstellen ZP[sub]M[/sub](Kamera,Punkt/Vector): [br]ZP_M((22,27,20),(2.5,0,5.25)) = (-4.44,-9.61,0)[br][br][math]ZP_M(CC, XX) \, := \, \left(\begin{array}{rrr}-z \left(CC \right)&0& x\left(CC \right)\\0&-z\left(CC \right)&y \left(CC \right)\\0&0&0\\\end{array}\right) \; XX \; \frac{1}{-z \left(CC \right) + z \left(XX\right)}[/math][br][size=85]in neueren Versionen in CAS-Funktionen Koordinatencommand ersetzen durch x()→*(1,0,0)[size=85], y()→*(0,1,0), z()→*(0,0,1)[/size] [/size]![br][br]AlgebraView-Version [br]SX'=Zip((1 / (z(X)-z(K)) Z_p X), X, SX) → [math]Z_P:\left(\begin{array}{rrr}-z \left( K \right)&0&x\left(K\right)\\0&-z \left( K \right)&y\left(K\right) \; \\0&0&0\\\end{array}\right)[/math] [br]
Ich hab 3 Scenen hinterlegt in Punktlisten X0, X1, X2[br]K Position Kamera (Parallel-Projektion) - L Position Licht/Beleuchtung Punktstrahler (Zentral-Projektion)[br][table][tr][td]Scene[br][/td][td]Punktliste [/td][td]Bildpunkte[br]ProjektionV[sub]i[/sub][/td][td]Bildpunkte[br]ProjektionV[/td][td]Bilder[/td][/tr][tr][td]T 2D[/td][td]SX=X0[/td][td] SX' [/td][td] SX''[/td][td]TBild, TBild', TBild''[/td][/tr][tr][td]L 3D[/td][td]SX=X1[/td][td] SX'[/td][td] SX''[/td][td]LBild, LBild', LBild''[/td][/tr][tr][td]Carpet[/td][td]SX=X2[/td][td] SX'[/td][td] SX''[/td][td]CarpetBild, CarpetBild',CarpetBild''[/td][/tr][/table][br]Um die eine Scene zu betrachten ist die Zuweisung SX vorzunehmen und[br]es ist die Darstellung der entsprechenden Punktlisten und Polygon/Polyline Bilder sichtbar/unsichtbar zu schalten! [br][br]App:[br]Punktliste SX wird durch Projektionsvektor v (erzeugt Matrix T) abgebildet auf SX'' - Vektor: Von Kamera K auf 1. Bildpunkt[sub]SX(1)[/sub] + d[sub]v[/sub] zur (ggf. mittigen) Ausrichtung = v Projektionsrichtung (CAS): .[br]SX' entsteht, wenn die Geraden (Lichtquelle) L ... SX(i) zur Projektion verwendet werden. [br]Punktförmige Lichtquelle erzeugt Schatten - für jeden Bild-Punkt wird eine Projektionsmatrix gebildet SX[sub]M[/sub].[br]Solve/Löse, Substitute/Ersetze, Append/Anfügen, Take/Teilliste, [br]Identity/Einheitsmatrix, Sequence/Folge, Length/Länge, Polygon/Vieleck, [br]Polyline/Polygonzug[br][br]
Verschiedene Blickwinkel auf den Teppich und Vergleich unterschiedlicher Projektionen
Oben: Draufsicht [br]MItte: Parallel-Projektion (Paralleles-Licht)[br]Unten: Zentral-Projektion (Projektion Punktstrahler - Spotlight-Schatten)

Information: Cam Carpet Projektion und Spotlight Projektion