我在OpenGL 2.0(固定管道)中構建了一個lookAt相機。 我的相機跟蹤它的位置,看點和向上矢量。 直到現在我用下面的代碼通過一定量的偏航相機:以角度旋轉lookAt相機
void Camera::yaw(float amount)
{
Vector3 rightVec = getRight();
lookAt.z += rightVec.z * amount;
lookAt.x += rightVec.x * amount;
}
這種方法似乎很好地工作時,我不在乎我到底有多少想偏航我的相機,但現在我想要將相機綁定到機器人的頭部,以便當機器人旋轉頭部時,相機會相應地偏斜。 我改變機器人的頭部角度的方法是保持其旋轉角度爲度,然後添加到該數字並使用glRotatef更改其旋轉角度。 所以現在爲了對齊我的相機和機器人,我需要我的相機yaw()函數來接受我想要添加的度數,並從中計算出新的lookAt值。 我試圖找出我自己的數學,但我找不到一個正確的解決方案。 我該如何改變我目前的偏航功能,以使用度數增量而不是隨機數量。
請你詳細說明如何在沒有平移和旋轉矩陣的情況下使用矢量數學做到這一點?位置和lookat由它們的三維座標給出。 –
更新了答案,但如果您使用的是3D圖形,則應該真正學習如何使用矩陣。 – BDL
我知道如何使用矩陣,它只是爲了圖形課程的最終項目,我不能包含任何數學庫,所以我自己實現了Vector類,而且我也不想實現矩陣。因爲它使用固定管道,所以我不需要所有渲染操作的矩陣類。 –