到https://jsyeh.org/3dcg10/下載window data.zip再解壓縮,
開啟Transformation.exe檔。
藍車變大及轉動:藍車移到右邊繞著中心公轉(右鍵swap),tran移到右邊、rotate公轉。week05-2:開一個新glut專案
複製貼上week04程式碼
修改程式:
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(1,0,0);//顏色
glPushMatrix();
glRotatef(angle,0,0,1);//改成z軸
glTranslatef(0.8,0,0);//右邊
glutSolidTeapot( 0.3 );
glPopMatrix();
glColor3f(0,1,0);//顏色
glPushMatrix();
glTranslatef(0.8,0,0);//右邊
glRotatef(angle*1.5,0,0,1);//改成z軸
glutSolidTeapot( 0.3 );
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week04");tr
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
結果:
2.畫身體、手、頭先把手丟進程式碼
下面的trans先拉上來並選取,把手移動到中心點位置,
再把rotate拉上來,最後的trans拉上來選取再移動手中心點到身體位置。
week05-2:程式碼:
#include <GL/glut.h>
float angle=0;
void myCube()
{
glPushMatrix();
glScalef(0.5,0.2,0.2);------------------>綠方塊
glutSolidCube(1);
glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(1,1,1);
glutSolidCube(1);------------------>白身體
glPushMatrix();
glTranslatef(0.5,0.5,1);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);---------------->右
glColor3f(0,1,0);
myCube();
glPopMatrix();
glPushMatrix();
glTranslatef(-0.5,0.5,1);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);---------------->左
glColor3f(0,1,0);
myCube();
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();
}
結果:





沒有留言:
張貼留言