1.複習:移動、旋轉、縮放
到http://www.cmlab.csie.ntu.edu.tw/~0/jsyeh/3dcg1網站下載source、data、win32、glut32.dll這四個檔案
開啟Texture.exe
可以按右鍵點選S調整順序
順序會影響旋轉
glScalef(為改變大小)
glRotatef(可改變旋轉位子)
若將車子變胖及讓位子向右
那用glTranslatef("移動位置往右的胖車子")
2.T-R-T旋轉(改變旋轉軸)
需先改變物件位子,讓旋轉軸在合適的地方,在旋轉到該去的 方向,在移動過去
glTranslatef(x,y,z);
glRoatef(x,y,z);
glTranslatef(x,y,z);
改變旋轉軸程式
#include <GL/glut.h>
float angle=0;///新修改
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslated(0, 0.5,0);
glutSolidTeapot(0.3);
glPopMatrix();
glPushMatrix();
glTranslatef(0.50,0.625,0);///(3)最後將cone擺到正確的位置
glRotatef(angle,0,0,1);///(1)先有個轉動,但怪怪的
glTranslatef(0.6, 0,0);///(2)先移動,使中心點在中間
glRotatef(-90, 0,1,0);///(0)轉動90度的cone
glutSolidCone(0.2, 0.6,30,30);
glPopMatrix();
glutSwapBuffers();
}
void motion(int x,int y)
{
angle=x;
display();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week10 rotate");
glutDisplayFunc(display);
glutMotionFunc(motion);
glutIdleFunc(display);
glutMainLoop();
}
沒有留言:
張貼留言