2)本周重點:移動、旋轉、放大縮小
3)3D物件
TODO:下載課本範例 http://jsyeh.org/3dcg10
載windows/解壓縮/ Transformation
Translate移動 Rotate旋轉 Scale放大縮小
到http://www.transmissionzero.co.uk/software/freeglut-devel/載MinGW/解壓縮/lib/複製改libglut32/codeblocks/file/new/project/GLUT
#include<GL/glut.h>
void display()
{
glTranslatef(0.8,0.8,0); 移動
glutSolidTeapot(0.3);
glFlush();
}
int main(int argc,char **argv)
{
glutInit(&argc, argv);
glutCreateWindow("02160056簡瑜萱");
glutDisplayFunc(display);
glutMainLoop();
}
做一個甜甜圈
#include<GL/glut.h>
void display()
{
///glutSolidTeapot(0.3);
glutsolidTorus(0.3,0.7,30,30);(內徑r,外徑R,橫切,縱切)
glFlush();
}
int main(int argc,char **argv)
{
glutInit(&argc, argv);
glutCreateWindow("02160056簡瑜萱");
glutDisplayFunc(display);
glutMainLoop();
}

#include<GL/glut.h>
void display()
{
///glutSolidTeapot(0.8,0.8,0);
glutWireTorus(0.3,0.7,30,30);
glFlush();
}
int main(int argc,char **argv)
{
glutInit(&argc, argv);
glutCreateWindow("02160056簡瑜萱");
glutDisplayFunc(display);
glutMainLoop();
}
甜甜圈未清畫面亂掉
#include<GL/glut.h>
float angle=0;
void display()
{
glRotatef(angle, 1,1,0);
glutWireTorus(0.3,0.7,30,30);
glFlush();
angle+=2;
}
int main(int argc,char **argv)
{
glutInit(&argc, argv);
glutCreateWindow("02160056簡瑜萱");
glutDisplayFunc(display);
glutMainLoop();
}
甜甜圈旋轉
#include<GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT);清畫面
glRotatef(angle, 1,1,0);
glutWireTorus(0.3,0.7,30,30);
glFlush();
angle+=2;
}
int main(int argc,char **argv)
{
glutInit(&argc, argv);
glutCreateWindow("02160056簡瑜萱");
glutDisplayFunc(display);
glutMainLoop();
}
甜甜圈自動旋轉
#include<GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT);畫面亂清畫面
glPushMatrix();畫面亂備份Mrtrix
glRotatef(angle, 1,1,0);
glutWireTorus(0.3,0.7,30,30);
glPopMatrix(); 畫面會亂所以還原Matrix
glFlush(); 衝出圖形
angle+=0.1;
}
int main(int argc,char **argv)
{
glutInit(&argc, argv);
glutCreateWindow("02160056簡瑜萱");
glutDisplayFunc(display); 當電腦需要display時,去呼叫的函式display()
glutIdleFunc(display);
glutMainLoop();
}
沒有留言:
張貼留言