反射向量的计算

在计算机图形学应用过程当中, 无论是二维环境还是三维环境, 经常涉及到碰撞反弹的问题

这个问题对应之际的数学问题就是反射向量的计算问题

一个向量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 , 还可以进一步减少计算量

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值