Eine gerichtete Lichtquelle wie die Sonne befindet sich so weit entfernt, dass die Strahlen für den Betrachter parallel erscheinen. Somit kann ein Punkt X anhand des Lichtvektors L (Geradengleichung: X+Lt) auf eine Ebene P projiziert werden.
Lichtquelle L = [Lx Punkt X = [Xx Projektion Y = [Yx
Ly Xy Yy
Lz Xz Yz
0 ] 1 ] Yw]
Fläche P: n ∙ x + d = 0 mit n = [nx x = (1/Xw) * [Xx
ny Xy
nz] Xz]
L X:╳
❘ ❘ ┆
▼ ▼ _┆_______
/ ▼ / P
/Y:╳ /
/ /
/________/
Berechne Projektionsmatrix M, so dass gilt:
Y = M X , n ∙ (M X) + d = 0
Damit der Punkt X auf der Ebene zu liegen kommt, muss n∙x+d=0 erfüllt sein. D.h. n∙(X+Lt)+d=0! Aufgelöst nach t ergibt sich: t=(-d-n∙X)/(n∙L). Der Wert von t eingesetzt in die Geradengleichung ergibt: Y=X-L(d+n∙X)/(n∙L) und umgeformt: Y=(X(n∙L)-L(n∙X)-Ld)/(n∙L).
Die Division kommt in den homogenen Abschnitt der Matrix (0 0 0 n∙L). Die Subtraktion -Ld kommt in den Translationsabschnitt (transponiert): [-dLx -dLy -dLz]. Der Rest ist die Summe einer Skalierungsmatrix mit Faktor (n∙L) und des Skalarproduktes -L(n∙X). Damit ergibt sich die Matrix als:
M = ( n∙L-Lx*nx -Lx*ny -Lx*nz -d*Lx )
( -Ly*nx n∙L-Ly*ny -Ly*nz -d*Ly )
( -Lz*nx -Lz*ny n∙L-Lz*nz -d*Lz )
( 0 0 0 n∙L )
Eine punktförmige Lichtquelle befindet sich in der Nähe und das Licht erstreckt sich in alle Richtungen und nicht parallel. Somit kann ein Punkt X anhand der Geradengleichung: l+(l-X)t auf eine Ebene P projiziert werden.
Lichtquelle L = [Lx mit l = (1/Lw) * [Lx
Ly Ly
Lz Lz]
l:╳ Lw]
\ Fläche P: n ∙ x + d = 0
◀
X:╳ mit n = [nx x = (1/Xw) * [Xx
\ ny Xy
\_________ nz] Xz]
/◀ / P
/Y:╳ /
/ /
/________/
Berechne Projektionsmatrix M, so dass gilt:
Y = M X , n ∙ (M X) + d = 0
Damit der Punkt X auf der Ebene zu liegen kommt, muss n∙x+d=0 erfüllt sein. D.h. n∙(l+(l-X)t)+d=0! Aufgelöst nach t ergibt sich: t=(-d-n∙l)/(n∙(l-X)). Der Wert von t eingesetzt in die Geradengleichung ergibt: Y=l-(l-X)(d+n∙l)/(n∙(l-X)) und zusammengefasst ergibt sich: Y=(l(n∙(l-X))-(l-X)(d+n∙l))/(n∙(l-X)). Wird ausmultipliziert, ergibt sich: Y=(l(n∙l)-l(n∙X)-l(d+n∙l)+X(d+n∙l))/(n∙(l-X)). Zusammengefasst: Y=((d+n∙l)X-l(n∙X)-l*d)/(n∙(l-X)).
Wie gehabt kommt die Division in den homogenen Abschnitt der Matrix (-nx -ny -nz n∙l), die Subtraktion -ld in den Translationsvektor und der Rest ist die Summe der Skalierung mit Faktor (d+n∙l) und dem Skalarprodukt -l(n∙X). Damit ergibt sich die Matrix als:
M = ( n∙l+d-lx*nx -lx*ny -lx*nz -d*lx )
( -ly*nx n∙l+d-ly*ny -ly*nz -d*ly )
( -lz*nx -lz*ny n∙l+d-lz*nz -d*lz )
( -nx -ny -nz n∙l )
Wird jedes Matrixelement der Matrix aus Abbildung 4 mit Lw multipliziert bleibt das Ergebnis gleich, gleichwohl ergibt sich dann folgende, vereinheitlichte Darstellung:
M = ( n∙L+d*Lw-Lx*nx -Lx*ny -Lx*nz -d*Lx )
( -Ly*nx n∙L+d*Lw-Ly*ny -Ly*nz -d*Ly )
( -Lz*nx -Lz*ny n∙L+d*Lw-Lz*nz -d*Lz )
( -Lw*nx -Lw*ny -Lw*nz n∙L )
Wenn für parallele Lichtquellen Lw auf 0 gesetzt wird und für punktförmige Lw != 0, dann kann Projektionsmatrix aus Abbildung 5 für beide Lichtquellenarten benutzt werden!
Für Puristen kann mit N=[nx ny nz d] (N ist der Vektor der Ebenengleichung P) und damit n∙L+d*Lw==N∙L die Matrix wie folgt notiert werden:
M = ( N∙L-Lx*Nx -Lx*Ny -Lx*Nz -Lx*Nw )
( -Ly*Nx N∙L-Ly*Ny -Ly*Nz -Ly*Nw )
( -Lz*Nx -Lz*Ny N∙L-Lz*Nz -Lz*Nw )
( -Lw*Nx -Lw*Ny -Lw*Nz N∙L-Lw*Nw )