先给出结论:折射方向公式:
t={η_1\over η_2}i+({η_1\over η_2}cos\theta_i-\sqrt{1-sin^2\theta_t})n 要注意的是,这个向量不是单位向量,使用前请自行单位化。
下面开始证明,根据 Snell 法则:
{sin\theta_1 \over sin\theta_2}={η_2\over η_1} 下面设定一些常用变量,默认都已经单位化:
– i:入射光线方向
– t:折射光线方向
– n:法线方向
– n_{\bot}:法线垂直方向
首先 i,t 可以表示为
i=-cos\theta_1n+sin\theta_1n_\bot\\ t=-cos\theta_2n+sin\theta_2n_\bot 由于我们不知道 n_\bot,可以使用以下方程获得等式:
n_\bot=csc\theta_1i+cot\theta_1n\\ n_\bot=csc\theta_2t+cos\theta_2n 所以,有:
csc\theta_1i+cot\theta_1n=csc\theta_2t+cot\theta_2n 可以解得 t:
t={sin\theta_2\over sin\theta_1}i+cos\theta_1{sin\theta_2\over sin\theta_1}n-cos\theta_2n 可以用 Snell 法则来代替正弦,用正弦来代替余弦,也就得到了最终公式:
t={η_1\over η_2}i+(cos\theta_1{η_1\over η_2}-\sqrt{1-sin^2\theta_2})n
参考:What does the equation of a refracted ray trace mean?