1. 程式人生 > >Rodrigues' Rotation Matrix(羅德里格旋轉矩陣)

Rodrigues' Rotation Matrix(羅德里格旋轉矩陣)

使用蒙特卡洛方法做半球面取樣時遇到有這樣的一個問題:預設產生的取樣向量組所在的半球面是Y軸(或其它軸)所對應的方向,但是在使用時可能就需要根據法向量對其進行變換,於是就有了這樣一個問題,給定兩個向量V0V1 計算出一旋轉矩陣R得到:

R V0 =V1

這個問題其實蠻簡單,可以直接用兩個向量的點積與叉乘計算出對應的夾角與旋轉軸,然後組合出旋轉矩陣即可(http://en.wikipedia.org/wiki/Rotation_matrix)。不過搜了下發現了另外一種方法:Rodrigues Rotation matrix(羅德里格旋轉矩陣),雖然這種方法可能並沒有速度上的優勢,但之前卻沒什麼瞭解(沒準兒也學過,但乾脆地忘了^_^)。其關於R

的計算如下: