2012-06-28 61 views
-6

我目前正在嘗試在java中製作一個方向計算器,並且我在各種對象的旋轉方面遇到了一些麻煩。如何找出旋轉立方體的頂點座標?

假設我們有一個初始位置的立方體,並且它的每個頂點都是已知的(也是它的中心)。然後,將立方體從初始位置轉動的Y軸angley弧度(或度,它並不重要)並在X軸的AngleX弧度。爲了保持簡單,我將離開Z軸,而且,立方體的中心位於圖的原點。

通過V8的AngleXangley已知考慮所有已知的與V1標誌着頂點的座標,可以有人請告訴我表達式的每個頂點立方體?

請不要告訴我有關在Java中可能找到或可能找不到的幫助程序方法。告訴我每個點的原始表達式(如果它可以節省空間,可以將它們集成到for循環中)。

如果你真的需要的初始條件的一個例子考慮以下立方體:

float vertices[]={ 
1, 1, -1, //v1 - top front right 
1, -1, -1, //v2 - bottom front right 
-1, -1, -1,//v3 - bottom front left 
-1, 1, -1, //v4 - top front left 

1, 1, 1, //v5 - top back right 
1, -1, 1, //v6 - bottom back right 
-1, -1, 1,//v7 - bottom back left 
-1, 1, 1 //v8 - top back left 
}; 
+0

如果我們給你一個將旋轉*任意點*的公式,那麼如何?這樣你就可以將它應用到你的多維數據集的每個頂點或任何其他多面體。 – Beta

+6

我們如何才能讓你獲得體面的計算機圖形圖書?弗利和範大壩很好。 – Alnitak

回答

0

使用旋轉矩陣旋轉單點。

http://en.wikipedia.org/wiki/Rotation_matrix

所以它最終使用矩陣乘法eqations。

v' = R * v 

其中v是點在笛卡爾座標中的向量,R是旋轉矩陣,v'是新點。你必須爲每個點應用這個乘法。

+0

非常感謝您的參考。它像一個魅力。 – user1489886

1

一般來說它取決於旋轉的順序上。一般而言,旋轉不會通過,即,如果首先圍繞軸a旋轉,然後軸旋轉,反之亦然,則這很重要。每個旋轉可以用矩陣形式表示爲頂點的線性函數。將原始座標映射到旋轉座標的最終矩陣是各個旋轉的乘積。所以你可以計算單個旋轉矩陣(就是google的「旋轉矩陣」),計算它們的乘積,然後計算這個矩陣與每個頂點的乘積,給出最終的頂點。 在一般情況下,即通常在計算機圖形等,爲了避免由旋轉的順序依賴引起的混淆,人們使用四元數來表示旋轉,但是更多地涉及... 希望這有助於併爲您提供正確的方向請看:)