好啦 其實是機器人的轉動移動 好困..
但無所謂 多學一點是一點吧
glBegin(...)代表畫一個藍色車車
glScalef(A,B,C)代表變胖的
glRotatef(a,A,B,C)代表轉動的
glTranslatef(X,Y,Z)代表移動的
重要!要從下往上看嘿 上面的程式代表去動到下面的東西 方向別記錯
接下來如果把順序做一點點改變 這一切就會變得很好笑喔
如果我把translatef跟rotatef換個位置 轉動的方向就會從原本是一個盤子 車子在上面的轉動
變成車子是正中心的轉動 嚴格來說是原本變胖/旋轉/平移 變成了變胖/平移/旋轉
實際情況會根據改動的數值有所差異
他改變了 所有的一切 所以切記
從下往上看 方向別記錯!
第二節課開始實作
老方法別忘了 libfreeglut.a複製改libglut32.a
codeblock open project GLUT專案
///看了程式之後, 把程式先備份在 Notepad++ 等一下可以參考
///再把上週的程式 copy 過來
///程式碼全刪,換我們上週教的10行
#include <GL/glut.h>
float angle = 0; ///step02-1 宣告global全域變數 angle
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); ///清背景
glColor3f(0,1,0);///綠色
glPushMatrix();
glTranslated(0.8,0,0);///最後再移動
glRotatef(angle, 0, 0, 1); ///對Z軸旋轉
glutSolidTeapot( 0.3 );
glPopMatrix(); ///step02-1 還原矩陣
glColor3f(1,0,0);///紅色
glPushMatrix(); ///step02-1 備份矩陣
glRotatef(angle, 0, 0, 1); ///最後再對著z軸旋轉
glTranslated(0.8,0,0);///移動x 0.8
glutSolidTeapot( 0.3 );
glPopMatrix(); ///step02-1 還原矩陣
glutSwapBuffers();
angle++; ///step02-1 把角度++
}
int main(int argc, char* argv[] )
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week04");
glutDisplayFunc(display);
glutIdleFunc(display); ///step02-1 有空idle時,就重畫畫面
glutMainLoop();
}
沒有留言:
張貼留言