簡體   English   中英

OpenGL:glRotatef機制以及如何圍繞正方形旋轉而不移動

[英]OpenGl: glRotatef mechanism & how to rotate square around itself without moving

我在了解glrotatef的機理或其工作原理時遇到問題,經過一些研究,我發現它包含4個變量,分別是我旋轉的角度,x軸為1或0,x軸為1或0。 y軸,z軸為1或0。

回答以下問題將有助於我理解glrotatef

問題是

  1. 如果我們正在討論要旋轉的正方形,那么我們發送給函數glrotatef的角度將在正方形的頂點或在旋轉它們的線上起作用嗎?
  2. 一次編寫函數glRotatef和在旋轉一個正方形時使用它寫入四次有什么區別,每一個glRotatef函數都可以在正方形的一側工作嗎?
  3. 如何使用glrotatef和gltranslatef圍繞自身旋轉正方形而不移動它的位置。
  4. 誰能以最簡單的方式解釋glrotatef的工作原理,並給出一些示例而不涉及代碼的任何部分,因為我是新手,而且我不了解有關glrotatef的stackoverflow問題上編寫的大多數代碼。

在閱讀問題的答案之前,我建議您閱讀如何使用模型矩陣進行平移/旋轉/縮放

當需要變換對象時,只需對對象具有的每個頂點執行操作。

P = [x,y,z,1]-您在3D中的點
M = [..]-您的4x4 旋轉矩陣

M * P-您的旋轉操作

根據我提供的參考,這是非常簡單的答案:

  1. 旋轉時,將重新計算每個頂點坐標位置,Opengl將從新的4個頂點再次生成您的正方形。
  2. 旋轉1度60度和旋轉2度30度之間沒有區別,您可以通過數學運算簡單地控制它(檢查旋轉矩陣鏈接):

M1 =您的60度旋轉矩陣

M2 =您的30度旋轉矩陣

M1 = M2 * M2 => M1 * P = M2 * M2 * P

  1. 這是我的答案: 繞與原點不同的點旋轉
  2. Rotatef()函數僅根據您提供的參數創建一個4x4旋轉矩陣,並通過乘以生成的旋轉來更新ModelView矩陣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM