電腦圖學_week14
2021/05/24(一)
今日的上課內容:
- 印出實心圓球
- 背景變紅的計時器
- 柳丁縱切
- 等4秒方塊旋轉
- 控制角度內旋轉
- 手臂轉動
今日程式碼:
///畫實心圓球
- ///備份清空
- #include <GL/glut.h>
- void display()
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glutSolidSphere(0.3, 30, 30);///實心的圓球
- ///半徑 縱切 橫切 (柳丁切)
- glutSwapBuffers();
- }
- int main(int argc, char** argv)
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
- glutCreateWindow("week14 timer");
- glutDisplayFunc(display);
- glutTimerFunc();
- glutMainLoop();
- }
///背景變紅的計時器
- ///備份清空
- #include <GL/glut.h>
- void display()
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glutSolidSphere(0.3, 30, 30);///實心的圓球
- ///半徑 縱切 橫切 (柳丁切)
- glutSwapBuffers();
- }
- void timer(int t)
- {
- glClearColor(1,0,0,0);///清除背景的色彩: 紅色
- display();///重新畫螢幕
- }
- int main(int argc, char** argv)
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
- glutCreateWindow("week14 timer");
- glutDisplayFunc(display);
- glutTimerFunc(4000, timer, 0);
- ///要等多久 叫誰 參數
- glutMainLoop();
- }
///等4秒方塊旋轉
- ///備份清空
- #include <GL/glut.h>
- int angle = 0;
- void display()
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glPushMatrix();///step02-1
- glRotatef(angle, 0, 0,1);///step02-1
- glutSolidCube(0.3);
- glPopMatrix();///step02-1
- glutSwapBuffers();///柳丁
- }
- void timer(int t)///step02-1 鬧鐘響了,timer叫了
- {
- glutTimerFunc(30,timer, t+1);///step02-1 馬上設定下一個鬧鐘,別睡太久
- angle++;///step02-1 上個廁所
- display();///重新畫螢幕 step02-1 喝個水
- }
- int main(int argc, char** argv)
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
- glutCreateWindow("week14 timer");
- glutDisplayFunc(display);
- glutTimerFunc(4000, timer, 0);///睡前第一個鬧鐘
- ///要等多久 叫誰 參數
- glutMainLoop();
- }
///控制角度旋轉
- ///備份清空
- #include <GL/glut.h>
- int angle = 0;
- void display()
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glPushMatrix();///step02-1
- glRotatef(angle, 0, 0,1);///step02-1
- glutSolidCube(0.3);
- glPopMatrix();///step02-1
- glutSwapBuffers();///柳丁
- }
- int diff = 2;
- void timer(int t)///step02-1 鬧鐘響了,timer叫了
- {
- glutTimerFunc(30,timer, t+1);///step02-1 馬上設定下一個鬧鐘,別睡太久
- angle+= diff;///step02-1 上個廁所
- if(angle>180) diff = -diff;
- if(angle<0) diff = -diff;
- display();///重新畫螢幕 step02-1 喝個水
- }
- int main(int argc, char** argv)
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
- glutCreateWindow("week14 timer");
- glutDisplayFunc(display);
- glutTimerFunc(4000, timer, 0);///睡前第一個鬧鐘
- ///要等多久 叫誰 參數
- glutMainLoop();
- }
///免等限制角度旋轉
- ///備份清空
- #include <GL/glut.h>
- int angle = 0;
- void display()
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glPushMatrix();///step02-1
- glRotatef(angle, 0, 0,1);///step02-1
- glutSolidCube(0.3);
- glPopMatrix();///step02-1
- glutSwapBuffers();///柳丁
- }
- int diff = 2;
- void timer(int t)///step02-1 鬧鐘響了,timer叫了
- {
- glutTimerFunc(30,timer, t+1);///step02-1 馬上設定下一個鬧鐘,別睡太久
- angle+= diff;///step02-1 上個廁所
- if(angle>90 || angle<0) diff = -diff;
- display();///重新畫螢幕 step02-1 喝個水
- }
- int main(int argc, char** argv)
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
- glutCreateWindow("week14 timer");
- glutDisplayFunc(display);
- glutTimerFunc(0, timer, 0);///睡前第一個鬧鐘
- ///要等多久 叫誰 參數
- glutMainLoop();
- }
///關節轉動
- ///備份清空
- #include <GL/glut.h>
- int angle = 0;
- void drawArml()
- {
- glPushMatrix();
- glScalef(1,0.5,0.5);
- glColor3f(1,0,0); glutSolidCube(0.3);///左手紅
- glPopMatrix();
- }
- void display()
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glPushMatrix();///step02-1
- glColor3f(1,1,1); glutSolidCube(0.4);///身體白
- glPushMatrix();
- ///glTranslatef(-0.2,+0.2,0);///(3)掛在右上角
- glRotatef(angle, 0, 0,1);///(2)轉動
- glTranslatef(-0.15,0,0);///(1)把旋轉中心的關節軸放在正中心
- drawArml();
- glPopMatrix();///step02-1
- glutSwapBuffers();///柳丁
- }
- int diff = 2;
- void timer(int t)///step02-1 鬧鐘響了,timer叫了
- {
- glutTimerFunc(30,timer, t+1);///step02-1 馬上設定下一個鬧鐘,別睡太久
- angle+= diff;///step02-1 上個廁所
- if(angle>90 || angle<0) diff = -diff;
- display();///重新畫螢幕 step02-1 喝個水
- }
- int main(int argc, char** argv)
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
- glutCreateWindow("week14 timer");
- glutDisplayFunc(display);
- glutTimerFunc(0, timer, 0);///睡前第一個鬧鐘
- ///要等多久 叫誰 參數
- glutMainLoop();
- }
今日成果:
⬆️背景變紅的計時器
⬆️等4秒方塊旋轉
⬆️控制角度內旋轉
⬆️免等限制角度旋轉
⬆️手臂關節轉動

沒有留言:
張貼留言