2016-08-02 708 views
0

我目前正在實現一個用於三維點雲過濾的算法,遵循科學論文。旋轉矩陣,規範化,行列式-1

我在計算特定值的旋轉矩陣時遇到了一些問題。目標是將點旋轉到由法向量(Z軸)的方向定義的座標系中。由於以下查詢在X,Y軸上旋轉對稱,因此這些軸的方向無關緊要。 R定義如下:Rotationmatrix

[1  1 -(nx+ny)/nz] 
R = [ (row1 x row3)'  ] 
    [nx  ny  nz ] 

n是歸一化的。當n_z變得非常小或爲零時,問題就會發生。因此,我考慮在計算行2的交叉產品之前對行1進行歸一化。

然而,行列式變爲-1。 rotationmatrix門檻會導致正確的結果? R是正交的,但det | R |不是+1

感謝您的任何建議

回答

1

你總是拿到

det(a, a×b, b) = - det(a, b, a×b) 
= - dot(a×b, a×b) 

總是負。因此,您需要通過否定它或重新排列行的總體順序來更改第二行。

+0

thx,發現,下面的文件我得到一個反射矩陣。因爲z軸的方向並不重要,所以對結果沒有影響。 – andysfd

+0

爲了他人的利益,在許多情況下,使用包含反射的轉換時,這不是有意的*是有問題的。除非有意識,否則我否定其中一個矢量來保存右手座標。 – sage

0

你對任意軸周圍的旋轉點感興趣嗎?如果是的話,也許quaternions是很好的解決方案。 如果要在實際使用它之前將四元數轉換爲矩陣,則可以檢查this