Latexluv opened this issue on Jun 04, 2010 · 182 posts
Sentinelle posted Fri, 25 June 2010 at 8:20 PM
Quote - ...
The relationship of the angle of transmittence, beta, to alpha is given by Snell's law:
IOR * sin(beta) = sin(alpha)
Which means:
sin(beta) = sin(alpha) / IOR
In other words, increasing the IOR from 1 decreases the sin of the angle beta.
Now the difficulty we have is that we're dealing with cosines, not sines. How to get cos(beta)?
Well, we use the following identity:
sin(x) ^ 2 + cos(x) ^ 2 = 1
Rearranging, we have:
sin(x) ^ 2 = 1 - cos(x) ^ 2
Cool. Start with Snell's law, but square both sides:
sin(beta) ^ 2 = (sin(alpha) ^ 2 ) / (IOR ^ 2)
Now use the previous identity to replace sin with cos.
1 - cos(beta)^2 = (1 - cos(alpha) ^ 2) / (IOR ^ 2)
Rearrange a bit:
cos(beta)^2 = 1 - (1 - cos(alpha)^2) / (IOR^2)
And taking square root, gives us cos(beta) in terms of cos(alpha).
cos(beta) = Sqrt(1 - (1 - cos(alpha)^2) / (IOR^2))
Since we have cos(alpha) [ from the Edge_Blend node ] we now have the correct attenuation factor taking IOR into account.
...
You're a genious BB. Surprisingly I was able to follow your logic after looking up Google for Snell's law. Your step by step explanation really helps. Thanks BB for including all the necessary steps to show us how you derived the final equation. Usually when I look up a math equation on the web, the author who explains it states a beginning equation then quickly jumps to his final conclusion in just a few steps, skipping perhaps 10 crucial steps that would help someone like me understand what he's talking about.