week05
1-1 https://jsyeh.org/3dcg10/ 下載data、win32資料夾
1-2 解壓縮windows.zip資料夾,將data資料夾拉進windows資料夾1-3 點開 Transformation.exe
1-4 回顧上週
1-5 交換順序
2-1 開codeblocks專案 week05-1_TRT_translate_rotate
複製week04-1程式貼上
2-2 更改程式
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);
glutSolidTeapot( 0.3);
glPopMatrix();
glutSwapBuffers();
angle++;
3-1 打開老師openGL程式
myDrawObject(0);///畫身體
glPushMatrix();
glTranslatef(0.22,0.16,0);///(3)把手臂掛在肩上
glRotatef(angle,0,0,1);///(2)轉動
glTranslatef(-0.41,-0.28,0);///(1)把關節放在正中心
myDrawObject(1);///畫手臂
glPopMatrix();
4-1 開新專案 week05-2_TRT_robot 貼上week05-1程式,簡化程式
4-2 把關節掛到右上角
4-3相同的程式碼,更改位置,將關節掛到左上角
#include <GL/freeglut.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,0);///掛到右上角
glRotatef(angle,0,0,1);///轉動
glTranslatef(0.25,0,0);///讓關節在正中心
glColor3f(0,1,0);///綠色手臂
myCube();
glPopMatrix();
glPushMatrix();
glTranslatef(-0.5,0.5,0);///掛到左上角
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("week04");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}















沒有留言:
張貼留言