OpenGL實(shí)例教程07:旋轉(zhuǎn)變換
給定一個(gè)角度和一個(gè)點(diǎn),讓這個(gè)點(diǎn)繞其中一個(gè)軸旋轉(zhuǎn)。改變的是X、Y和Z三個(gè)分量中的兩個(gè),而第三個(gè)分量保持不變。這意味著路徑將位于三個(gè)主要平面之一:
XY(繞Z旋轉(zhuǎn))
YZ(繞X旋轉(zhuǎn))
XZ(繞Y旋轉(zhuǎn))
還有更復(fù)雜的旋轉(zhuǎn)轉(zhuǎn)換,允許繞任意向量旋轉(zhuǎn),但在此階段我們不需要它們。
一個(gè)簡(jiǎn)單的選擇示例
要沿著圓從點(diǎn)(x1,y1)移動(dòng)到點(diǎn)(x2,y2)。即,要旋轉(zhuǎn)點(diǎn)(x1,y1)角度a2。

假設(shè)圓的半徑是1。這意味著:

使用三角恒等式來(lái)展開x2和y2:

如果x和y是4向量的一部分,那么上面的方程可以寫成矩陣形式:

如果為YZ(圍繞X軸)和XZ(圍繞Y軸)平面創(chuàng)建旋轉(zhuǎn),那么方程基本上是相同的,但矩陣的排列略有不同。以下左邊是圍繞Y軸旋轉(zhuǎn)的矩陣,右邊是圍繞X軸旋轉(zhuǎn)的矩陣:

代碼展示:
如果需要旋轉(zhuǎn),使用uniform變量將矩陣傳輸?shù)絪hader里即可,其他代碼與與位移變換代碼相同。
運(yùn)行效果:

標(biāo)簽: