反射向量的计算

 这么简单的问题居然都忘了。。。郁闷。。。还是记下来。

 

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

 

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

 

v' = v + alpha * N/|N|

 

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都是非标准向量

 

如果N是单位向量, 可退化为:  v' = v - 2 * (v*N) *N

 

 

更简单的思路,眼球位置在vEye, 顶点在vPos, 单位化的法线向量为N, 于是视线向量为vEye - vPos, 将其单位化

得到向量v

v*N 即为v向量在N向量上的投影长度,

要利用三角形方法进行矢量运算得出反射向量就需要2*(v*N)*N 这个改变长度后的与原来法向量重合的向量

长度即为v向量在N向量上的投影长度的2倍

这时再利用向量相减就可以得到反射向量了,

最后的公式: v’= 2*(v*N)*N  - v, 注意这里的v和上面的不同哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值