我已經定義了一個物體在3D空間中的位置,旋轉和縮放值(全部定義爲3D矢量)。它也具有向上和向前的方向向量。當我旋轉物體時,我需要這些方向向量隨之旋轉。歐拉旋轉的方向矢量
假設我的向上向量是(0,1,0),我的向前向量是(0,0,1)在零旋轉時,我該如何實現?
我已經定義了一個物體在3D空間中的位置,旋轉和縮放值(全部定義爲3D矢量)。它也具有向上和向前的方向向量。當我旋轉物體時,我需要這些方向向量隨之旋轉。歐拉旋轉的方向矢量
假設我的向上向量是(0,1,0),我的向前向量是(0,0,1)在零旋轉時,我該如何實現?
您可以將當前矢量與旋轉矩陣相乘(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) |
僅僅通過相同的角度旋轉每個這些載體的你的物體被旋轉着。比方說,你是在和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軸,這是中並行到你的前鋒矢量旋轉