解析:
为什么要求 v⊥,其实,这里主要的思想就是为 v' 构建一个坐标系,这个坐标系的一个轴 为 v1, 另一个轴为 v⊥,简单理解就是x,y轴,那么,v'就可以分解成v1, v⊥轴上的分量,这样就可以求出v'了;
开始解释 2.7, 2.8 公式:
v0,v1都是单位向量。
为了求 v⊥,那么可以尝试求蓝色的向量。
1. 红色的向量 r = ( v0 点积 v1 ) * v1
2. 求蓝色的向量 b ,
常规方法:
sin(θ) = b / v0
b = v0 * sin(θ)
由于 v⊥ 与 v1 垂直,b 也与 v1 垂直,所以 v⊥ 与 b 是平行的,那么这里求出了b也就是求出了v⊥,只要将b执行归一化。
pbrt方法:
利用向量关系来求 b,
红色的向量 r + 蓝色的向量 b = v0
b = v0 - r
b = v0 - ( v0 点积 v1 ) * v1
这里就求出了 2.7 公式了。
当然这里还是要把b执行归一化。
3. 那么b得到了,也就是v'的坐标系已经构建完了,就可以直接求出 v'的在 v1, v⊥ 上的分量,也就是 sin(θ')和cos(θ')
那么最后得到的就是:
v' = cos(θ') * v0 + sin(θ') * v⊥
这里也可以得到了2.8公式了。