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 )