2011-12-22 122 views
7

我有一個代表三維人物上臂旋轉的四元數。我也有一條應該代表角色手臂新位置的線條。該線位置由兩個3D點給出。Quaternion的方向矢量?

這是我擁有的唯一數據,我試圖在3D包(數字符文)中調用一個方法,該方法需要2個方向向量並返回表示將手臂移動到新位置所需的旋轉的四元數。

問題是我看到一些奇怪的行爲,就好像這些軸被混淆並且它通常不起作用。此外,代表3D傢伙手臂的Quaternion對象(來自3D軟件包)具有W,X,Y和Z.X,Y和Z代表方向矢量嗎?因爲這正是我需要正確調用該功能的原因。我一直在使用這一點,以及從我的線的端點計算出的方向矢量,但正如我所說,它看起來很有趣。

如果X,Y和Z不是方向矢量,如何將四元數轉換爲兩個端點,以便我可以計算方向矢量?

+2

這可能是有用的http://stackoverflow.com/q/1171849/10468和這個http://stackoverflow.com/q/2646121/10468 – DarenW 2011-12-23 07:17:30

回答

7

在你的上下文中(以及在大多數計算機圖形環境中),一個quaternion is used to represent a rotation。你不想直接使用X,Y和Z;相反(如上面鏈接的教程中所述),您可以使用它來生成rotation matrix。您應該像使用其他3D transformation matrix一樣使用旋轉矩陣;它將按照它所來自的四元數描述的原點圍繞原點旋轉。

四元數的X,Y和Z do表示旋轉的軸,但四元數也以非常直接的方式編碼旋轉的大小。如果你的軟件包包含返回四元數的函數,它還應該包含將其四元數轉換爲旋轉矩陣的函數;如果可能的話,你應該使用打包函數(因爲它應該使用與生成它們的方法相同的約定)。

讀完四元數和變換矩陣之後,您應該仔細閱讀相關函數的文檔,以確保您提供了正確的參數類型,並確保您使用的結果是正確的方式(很容易把它搞砸,即使你熟悉數學......)。