Week05
去https://jsyeh.org/3dcg10/下載windows data
解壓縮把data放到windows
開啟transformations
1.translatef是移動
2.rotatef是轉動
3.scalef是尺寸x,y,z軸長胖縮小
4.glBegin藍色車子
移動跟轉動對調變成車子在中心
camera繞著他轉
第一個程式
#include <GL/glut.h>
float angle = 0;
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glColor3f(0,1,0);
glPushMatrix();
glTranslatef(0.8,0,0);
glRotatef(angle, 0, 0, 1);
glutSolidTeapot( 0.3 );
glPopMatrix();
glColor3f(1,0,0);
glPushMatrix();
glRotatef(angle, 0, 0, 1);
glTranslatef(0.8,0,0);
glutSolidTeapot( 0.3 );
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char* argv[] )
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week04");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
綠色紅色茶壺轉動
第二個程式
!!下禮拜要考試!!
glPushMatrix();
glTranslatef(0,0,0); 3.最後把轉動的手軸.掛到正確的位置
glRotatef(angle, 0, 0, 1); 2.轉動,要小心正負號還有轉動軸
glTranslatef(0,0,0); 1.把手軸中心放到世界中心
drawHand();
glPopMatrix();
利用老師的範例按空白鍵轉動,記住要改成英文
調整過後在正確位置的手臂
1.先把手移動到中心上
2把轉動移回去
3.把手接回去
第三個程式
#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();
glutSolidCube(0.5);
glPushMatrix();
glTranslatef(0.25,0.25,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0.25,0);
///glTranslatef(0.5,0.5,0);
glColor3f(1,0,0);
glutSolidCube(0.5);
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char* argv[] )
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week04");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}

沒有留言:
張貼留言