2010-05-29 107 views
4

我已經定義了一個物體在3D空間中的位置,旋轉和縮放值(全部定義爲3D矢量)。它也具有向上和向前的方向向量。當我旋轉物體時,我需要這些方向向量隨之旋轉。歐拉旋轉的方向矢量

假設我的向上向量是(0,1,0),我的向前向量是(0,0,1)在零旋轉時,我該如何實現?

回答

4

您可以將當前矢量與旋轉矩陣相乘(Wikipedia entry,在'基本旋轉'下)。如果旋轉軸在2軸或更多軸上,只需乘以適當的矩陣。例如,如果通過在X軸30度和在Y軸60旋轉,乘以

| 1   0   0  | 
| 0 cos(pi/6) -sin(pi/6) | 
| 0 sin(pi/6) cos(pi/6) | 

,然後通過

| cos(pi/3) 0  sin(pi/3) | 
| 0   1   0  | 
| -sin(pi/3) 0  cos(pi/3) | 
1

僅僅通過相同的角度旋轉每個這些載體的你的物體被旋轉着。比方說,你是在和Z軸旋轉(即(0,0,1))

方程爲:

x' = x cos(angle) + y sin(angle) 
y' = -x sin(angle) + y cos(angle) 
z' = z 

你的 「上」 向量是(0,1,0),從而;

x' = 0 * cos(angle) + 1 * sin(angle) = sin(angle) 
y' = -0 * sin(angle) + 1 * cos(angle) = cos(angle) 
z' = 0 

你 「前鋒」 向量是(0,0,1),所以:

x' = 0 
y' = 0 
z' = 1 

它不會轉動,因爲我們是圍繞Z軸,這是中並行到你的前鋒矢量旋轉