我開始混淆數學。旋轉到opengl中的給定方向
我想進行旋轉,將y軸的方向轉換爲給定方向。
所以我想做一個函數,它有一個輸入方向,並調用glRotatef()。在我繪製的任何功能之後,應該指向給定的方向而不是向上。
glRotatef具有4個參數:角,X,Y,Z
我開始混淆數學。旋轉到opengl中的給定方向
我想進行旋轉,將y軸的方向轉換爲給定方向。
所以我想做一個函數,它有一個輸入方向,並調用glRotatef()。在我繪製的任何功能之後,應該指向給定的方向而不是向上。
glRotatef具有4個參數:角,X,Y,Z
基本上,要與一個(單位長度)方向d
對準世界y
軸線。爲了用glRotatef組成一個旋轉矩陣,需要一個軸a = [a_x, a_y, a_z]
和一個角度omega
。
即需要y
成d
的旋轉軸是垂直於y
和d
,從而可以通過矢量叉積來計算:
a = cross(y, d);
旋轉omega
的角度僅僅是矢量y
之間的角度和d
,因此可以從點積計算得出:
omega = acos(dot(y, d));
現在你可以bui LD與旋轉矩陣:
glRotatef(omega, a_x, a_y, a_z);
要小心,omega
需要在度和不弧度。同時檢查旋轉方向。
如果你迷惑*數學*本身,這是一個成就......無論如何,你的問題是非常具體。所以不會爲你學習OpenGL和數學,對不起。得到一個教程,並通過它。 –