2023年3月9日 星期四

要叫什麼丫 Week 04 Rotate

glRotatef 旋轉

  • 打開Transformation.exe
  • 看到glRotatef (gl表示glut函數,f 表示浮點數)
  • 第一個參數 表示旋轉角度 (與右手定則方向相同,大拇指為選轉軸,手指轉動方向為旋轉方向)


  • 後面的三個參數表示旋轉軸 Y 軸為(0,1,0),旋轉角度為正,車子會水平往右旋轉



  • 將後面旋轉軸改為 X軸(1,0,0),旋轉角度為正車頭會往下



  • 將選轉軸更改為Z軸(0,0,1),旋轉角度為正車子會向左傾斜,右邊較高,因為Z軸方向由里往外延伸


  • 若旋轉軸為(1,1,0),旋轉方向則會由左上往右下旋轉



GLUT glRotatef()

  • 開新專案,將之前的10行程式碼貼上
  • 更改以下橘色標示的地方程式碼,使茶壺能轉動



GLUT 打光

  • 開新專案,將原始的程式碼檢下另存,再將剛剛寫glrotatef()的程式碼複製貼上
  • 到另存的程式碼中尋找light


  • 將以下的程式碼複製,貼上到新開的glut程式碼公開的部分



  • 將以下的程式碼另定義一個函數 void mylight()



  • 最後在main函數中,加入mylight()


  • 執行程式就會看見已經有打光上去的茶壺


GLUT Translate與Rotate順序差異

    程式碼:Rotate在Translate前
  • 打開Transformation.exe
  • 在下方程式碼按右鍵,選擇swap translate/rotate



  • 交換順序後的程式執行結果會以以下順序進行



  • 在程式碼的部分,新開一個GLUT project,將之前rotate的程式碼複製貼上
  • 更改以下部分程式碼

  • 程式執行結果如下


程式碼:TranslateRotate

  • 打開Transformation.exe
  • 程式執行結果會以以下順序進行



  • 在程式碼的部分,新開一個GLUT project,將之前rotate的程式碼複製貼上
  • 更改以下部分程式碼


  • 程式執行結果


沒有留言:

張貼留言