反射方向计算公式如下:
其中R表示反射方向,L表示入射方向,N表示法向(单位向量)。
该公式推导如下:
1、首先入射方向、反射方向向量可分成两个分量分别是:
与法向N平行分量Ln、垂直于法向N分量Lnt,可如下图所示(针对于入射方向):
2、依据上图,可以推导出入射向量在法线向量方向的分量为:Ln =(L·N)*N,注意:由于法线向量N为单位向量,其单位向量的模为1,故L·N = |L||N|cosa = |L|cosa ,相当于L·N的点乘结果为L在N上的垂直投影,后续乘以法线向量代表Ln的方向,该方向为法向量的方向;进一步地,可以推导出L在垂直法线向量的分量:Lnt = L-Ln = L - (L·N)*N;
3、由于镜面反射结果,入射向量L与法线向量N的夹角(a1)等于反射向量R与法线向量N的夹角(a2),另外由于L的入射方向是向目标物体表面的,故上述推导转成反射向量的分量,需要对L进行取反,故:R = -Lnt + Ln = -[(-L)-(-L·N)*N] +(-L·N)*N= L -2(L·N)*N;
故此,公式推导如上所述,其中用到了一个向量的基本加减推导,也即A+B = C