折射定律证明





光的反射与折射的向量计算

光的反射与折射的向量计算

      在raytrace的计算中,光反射与折射的计算是两个非常重要的过程,而由于我们在图形学中通常都使用向量来计算,所以也有必要找到一套计算光反射和折射模型的向量计算方法。(该方法来自Bram de Greve的文章"Reflections and Refractions in Ray Tracing")

1.反射,假设入射光的单位方向向量为L,物体的单位表面法向量为N,最后要求的反射单位向量为R,如图所示

由于这几个向量都是单位向量,我们很容易看出R-L的结果(R加上-L(绿色的那根))与N是共线的(同方向),而且|R-L|的值等于2乘以L在N上的投影(即蓝色的那段)。于是得到等式R-L=N*(2N·(-L)),求解得到:

R=L-2(N·L)*N。

 

2.折射,折射的计算要比反射复杂多了,首先要知道折射定律,入射角θ1与折射角θ2满足sinθ1/sinθ2=η2/η1,其中η1,η2分别为入射光与折射光所在空间的介质的折射率,可以取η=η2/η1为相对折射率,而我们知道的已知量是N(物体表面单位法向量),L(光的入射单位向量),η(相对折射率),下面就来求解单位折射向量T。

首先要注意N,L,T都是单位向量,这一点很重要!

我们需要求出cosθ1与cosθ2,cosθ1非常好求,实际上cosθ1=-N·L(因为N,L,T都是单位向量,所以可以这样写)。cosθ2=sqrt(1-sin²θ2)=sqrt(1-(1/η²)sin²θ1)=sqrt(1-(1/η²)(1-cos²θ1))

(注释:sqrt是开方的意思)

下面将L和T分别分解到N的方向和垂直于N的方向,L=l1+l2,T=t1+t2。注意到|l1|=|L|sinθ1=sinθ1,同理得|t1|=|T|sinθ2,而容易知道向量l1与t1的方向是一致的,所以有t1=(sinθ2/sinθ1)*l1=(1/η)*l1

再根据l2=-Ncosθ1(因为l2与N方向相反,大小关系是|l2|=|N|cosθ1)以及L=l1+l2,

可以求得l1=L+Ncosθ1。将这个结果带入到上面红色的等式中,t1=(1/η)(L+cosθ1)。

下面还需要求出t2,由勾股定理可以得到|t1|²+|t2|²=|T|²=1,然后再次利用t2与N的方向相反的关系得出:

t2=-N*|t2|²=-sqrt(1-|t1|²)*N,之前已经知道|t1|=sinθ2(紫色的式子),所以带入前面的式子可知

t2=-Ncosθ2。

最后T=t1+t2=(1/η)(L+Ncosθ1)-Ncosθ2=L/η+((cosθ1)/η-cosθ2)*N。其中cosθ1与cosθ2由上面的两个蓝色式子给出。

 

同时应该注意到由于在不同的情况下η的值是不同的,再配合上入射角θ1取值,完全可以让1-(1/η²)(1-cos²θ1)的值小于0,这样上面蓝色等式中的cosθ2岂不是就无意义了?

而事实上,这正是全反射现象。当光线从光密介质进入光疏介质的时候,如果入射角大于某个临界角时,会发生全反射现象。这个临界角就是是折射角为90度时对应的入射角,也就是cosθ2刚好等于0的时候。


### 费马原理简介 费马原理是几何光学中的基本原理之一,它指出光在两点之间传播时所经历的时间是最小的(更准确地说是最短、最长或驻点)。即对于任意一条路径 \( s \),实际光线走过的路径使得时间积分: \[ T = \int_{A}^{B} n(s) ds / c_0 \] 达到极值。其中\( n(s)\) 是介质折射率,\(c_0\) 真空中光速。 ### 反射定律表述 反射定律表明当一束光线入射到平滑界面时,入射角等于反射角,并且这两条线以及法线共面。 #### 使用费马原理解释过程 为了应用费马原理来证明反射定律,我们考虑从一点出发到达另一点的所有可能路径,并寻找最短时间的那个路径。假设有一光源位于空气中某位置P,经平面镜M反射后到达观察者Q的位置. 设坐标系xoy如图所示,则有: - 入射点为O(0,h), - 观察者所在的接收点为Q(L,-H). ![image](https://latex.codecogs.com/svg.image?%5Cdpi%7B120%7D&space;%5Cfn_phv&space;\textup%7B示意图:%7DP(h),%20O(x,y),%20Q(L,-H)) 由于反射发生在xy轴上(y=0处),所以我们可以把整个问题简化成求解PO段加OQ段总长最小化的问题。利用勾股定理可以得到路程表达式如下: \[ d=\sqrt{h^2+x^2}+\sqrt{(L-x)^2+(-H-h)^2}. \] 接下来对d关于变量x求导数并令其等于零即可找到使距离取极值的条件。通过简单的微分计算得出: \[\frac{x}{\sqrt{{h}^{2}+{x}^{2}}}=\frac{-H+h-(L-x)}{\sqrt{{(-H-h)}^{2}+(L-x)^2}}.\] 这个等式的左边实际上就是sin(i)(正弦函数形式下的角度i表示入射角),而右边则是-sin(r) (负号是因为方向相反,r代表反射角).因此最终结论就变成了: \[ sin(i)=sin(r).\] 由此可得θ₁=θ₂ ,也就是入射角等于反射角,这正是反射定律的内容!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值