求反射向量

转载 2015年07月08日 10:30:23

在图形学中,计算光照模型时,经常需要求取反射向量,一般的shader函数库都提供计算反射向量的方法,下面介绍一下如何手动计算反射向量。

给定入射光线向量I和平面法向量N,求反射向量R,如下图。为了方便计算,这里假定I和N都是单位向量(模为1,编程时可先将I和N单位化)

方法一

设入射光线向量I和反射平面的法向量N之间的夹角为theta。连接I的始端和R的末端,则有

R = 2P - I              (1)

现在问题变成了如何求取P,设入射点0到P与N的交点的向量为S,那么有

P = I + S               (2)

现在问题变成了如何求取向量S,向量S即向量-N(注意,这里是-N,因为S和N的方向相反。)在向量N上的投影,根据向量的投影公式有

因为N是单位向量,简化一下得到

将S代入公式(2),再将P代入公式(1)得到

方法二

将R平移一下,与向量N的延长线相交。

由于入射角和反射角相等,且I和R的长度也相等,所以三角形ION是等腰三角形。故有

ON = 2S

所以有

R = I + 2S

而S是-I在N上的投影,所以有

由于N是单位向量,简化一下得到

所以

貌似方法二更直观些。

作者:zdd
出处:http://www.cnblogs.com/graphics/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

相关文章推荐

反射向量的计算

在计算机图形学应用过程当中, 无论是二维环境还是三维环境, 经常涉及到碰撞反弹的问题这个问题对应之际的数学问题就是反射向量的计算问题一个向量V, 在法向量为N的平面上产生的反射向量V的计算的问题这个向...

求反射向量

在图形学中,计算光照模型时,经常需要求取反射向量,一般的shader函数库都提供计算反射向量的方法,下面介绍一下如何手动计算反射向量。 给定入射光线向量I和平面法向量N,求反射向量R,如下图。为了方便...

OpenGL 求反射光线 反射向量

  • 2011年04月28日 23:06
  • 7KB
  • 下载

求矩阵特征向量

  • 2014年05月28日 22:44
  • 540KB
  • 下载

Jacobi迭代求矩阵特征值和特征向量+C代码

Jacobi计算过程如下: 1. 选择矩阵A非对角元中最大值A[i][j],运用公式 tan 2O = 2*A[i][j] / (A[i][i] - A[j][j]) 获得选择平面矩阵J,使J * A...

vba求特征值与特征向量

  • 2014年08月14日 22:45
  • 3KB
  • 下载

求矩阵特征值和特征向量

  • 2014年07月15日 07:55
  • 208KB
  • 下载

用java实现数据挖掘中的向量求相似度

网上找了一圈,发现求向量间相似度的代码基本都是要求输入两个字符串string,而不能直接求向量间的相似度。     于是我和我好基友就花了一下午,写出了一个求余弦距离的java程序,用的原理基本上是...

求矩阵的特征值与特征向量

  • 2010年03月12日 16:06
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:求反射向量
举报原因:
原因补充:

(最多只允许输入30个字)