week05
打開下載好的Transformation
glTranslatef ///上下左右移動
glRotatef ///轉動
glScalef ///高矮胖瘦
glBegin(...); ///藍色車子
...
交換rotate跟translate的位置
glRotatef ///整個轉動
glTranslatef ///移動到右邊的
#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); ///改對z軸轉
glutSolidTeapot( 0.3 );
glPopMatrix();
glColor3f(1,0,0); ///紅色
glPushMatrix();
glRotatef(angle, 0, 0, 1);///改對Z軸轉///最後是紅色的轉動
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("week05");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
畫出機器人的頭 身體 手
更改程式碼的位置,讓手的轉軸在肩膀上
期中作業範例:
glPushMatrix();
glTranslatef(-0.5,-0.9,0);
glRotatef(-45,0,0,1);
glTranslatef(-0.8,0.9,0);
drawHand();
glPopMatrix();
做出兩個方塊,讓轉軸在綠色方塊上,順時鐘轉動
#include <GL/glut.h>
float angle = 0;
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); ///把旋轉中心,放到中心
glColor3f(1,0,0); ///紅色手臂
glutSolidCube(0.5);
glPopMatrix();
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();
}





沒有留言:
張貼留言