求反射向量

本文介绍了一种高效的反射向量计算方法。通过分析反射原理及向量知识,推导出了一个计算公式,仅需一次除法及多次加法和乘法运算即可完成。特别地,当法向量为单位向量时,计算过程更简洁。

学习图形学,要涉及好多数学知识,在碰撞反弹问题上用到反射向量,查了下资料搞明白了,该方法有个计算技巧,效率非常的高

一个向量V, 在法向量为N的平面上产生的反射向量V'的计算的问题

利用反射原理和向量知识, (v', 和 -v关于法向量对称 )我们知道有:

      v'- v = alpha * N/|N|      alpha是一个常数  N/|N| 是单位法向量

如果我们知道了alpha这个常数就可以直接得到v' = v + alpha * N/|N|

alpha 是多少呢,  alpha是-v向量在N向量上的投影长度

-v * N = |-v| * |N| * cosCita = alpha * |N| *0.5

所以 alpha = 2*(-v *N)/|N|

从而 v' = v + 2*(-v*N)/|N| * N / |N|  = v  - 2*(v*N)*N/(N*N)

注意这个公式当中, v, N都是非标准向量(模不是1)的

     整个计算公式只涉及到一次除法和若干(二维和三维下不同)次加法和乘法

如果N是单位向量, 可退化为:  v' = v - 2 * (v*N) *N , 还可以进一步减少计算量

posted on 2009-09-22 19:18 GXW 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/Fancyboy2004/archive/2009/09/22/1572052.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值