Um einen Strahl an einer Ebene zu spiegeln, braucht man keinen
(Co)Sinus, sondern das macht man so:
R als Stützpunkt und Richtung: s+µd [Strahl (Ray)]
P als Normalform: n * (x - a) = 0 [Ebene (Plane)]
I als Koordinaten: v [Schnittpunkt (Intersection)]
M als Stützpunkt und Richtung: t+λe [Spiegelstrahl (Mirrored Ray)]
Man nimmt R und P und berechnet I.
Zuerst R in P einsetzen um µ zu erhalten.
n * ((s + µd) - a) = 0
n*(s+µd) - n*a = 0
n*s + n * µd = n*a
µ * n*d = n*a - n*s
µ = (n*a - n*s)/(n*d)
µ = n*(a-s)/(n*d)
Dann mit µ I ausrechnen.
I = s + µ*d
Dann den Spiegelstrahl ausrechnen.
Zunächst die relative Entfernung γ von I + d zur Ebene berechnen.
n*((I + d + γn) - a) = 0
n*I + n*d + n* γn - n*a = 0
γ * n*n = n*a - n*I - n*d
γ = (n*a -n*I - n*d)/(n*n)
Diese dann verdoppeln und auf I + d addieren, damit wir T erhalten.
T = I + d + 2*γ*n
Jetzt können wir den Spiegelstrahl berechnen.
M = I + λ*(T-I)
Ich weiß jetzt nicht wie weit ihr das mitverfolgen konntet, aber es ist auf
jeden Fall ganz einfach. Es reicht auch eine 2D-Zeichnung um sich das
vorzustellen.
///Edit 1:
ŋ durch λ ersetzt und dann þ durch ŋ ersetzt.
///Edit 2:
ŋ durch γ ersetzt.
