電腦圖學
Week14
今日第一個任務畫出一個圓,大部分的程式碼可以看以前的打喔!!
程式碼:
#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);
glutMainLoop();
}
1.2 加上時間可以改變背景顏色,會像動畫一樣
程式碼:
#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();
}
1.2.1
程式碼:
glutWireSphere(0.3,30,30);
2.1運用時間,類似設計鬧鐘一樣
程式碼:
#include <GL/glut.h>
int angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0,0,1);
glutSolidCube(0.3); ///實體方塊
glPopMatrix();
glutSwapBuffers(); ///柳丁
}
void timer(int t) ///鬧鐘響了,timer叫了
{
glutTimerFunc(30,timer,t+1); ///馬上設定下一個鬧鐘,不要響太久
angle++; ///上個廁所
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();
}
2.2讓轉動不要著麼單調,逆時鐘順時鐘交換
程式碼:
#include <GL/glut.h>
int angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0,0,1);
glutSolidCube(0.3);
glPopMatrix();
glutSwapBuffers();
}
int diff=2;
void timer(int t) ///鬧鐘響了,timer叫了
{
glutTimerFunc(20,timer,t+1); ///馬上設定下一個鬧鐘,不要響太久
///倍速
angle+=diff; ///上個廁所
if(angle>180) diff=-diff;
if(angle<0) diff=-diff;
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();
}
3.1
程式碼:
#include <GL/glut.h>
int angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0,0,1);
glutSolidCube(0.3);
glPopMatrix();
glutSwapBuffers(); ///柳丁
}
int diff=2;
void timer(int t) ///鬧鐘響了,timer叫了
{
glutTimerFunc(20,timer,t+1); ///馬上設定下一個鬧鐘,不要響太久
///倍速
angle+=diff; ///上個廁所
if(angle>180 || angle<0 ) diff=-diff;
display(); ///喝個水
}///睡了
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
glutCreateWindow("Week14 timer");
glutDisplayFunc(display);
glutTimerFunc(0 , timer ,0);
///要等多久 叫誰 參數
glutMainLoop();
}
3.2 最後加上手臂,今天的任務就大功告成囉
程式碼:
最後看一下我可愛的作業4,我斷斷續續花了一天的時間才完成,真的很開心,是大眼仔喔<3
程式碼我就不放了,有興趣可以去github看!!




沒有留言:
張貼留言