Step01-1
為了複習考試題目,複習上週的上課內容
///貼上上週的week05-2_TRT_robot
#include <GL/glut.h>
float angle=0;///step02-2
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///step02-2²MI´º
glutSolidSphere(0.02, 30, 30);///正中心的圓球
glPushMatrix();
glPushMatrix();
glRotatef(angle, 0, 0, 1);
glTranslatef(0.46, 0.05, 0);///(1)把旋轉中心放到中心
///glTranslatef(0.5, 0.5, 0);///step03-3先註解掉
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week06");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
Step02-1
///week06-2_TRT_robot_hierarchy改自week06-1
#include <GL/glut.h>
float angle=0;///step02-2
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///step02-2²MI´º
glutSolidSphere(0.02, 30, 30);///正中心的圓球
glutSolidTeapot(0.3);///step02-1身體
glPushMatrix();
///step02-1先註解掉///glTranslatef
glTranslatef(0.5, 0.13, 0);///step02-2新的
glRotatef(angle, 0, 0, 1);///(2)就可以轉動
glTranslatef(0.46, -0.05, 0);///(1)把旋轉中心放到中心
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week06");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
Step02-2
要更多層的轉動
///week06-2_TRT_robot_hierarchy改自week06-1
#include <GL/glut.h>
float angle=0;///step02-2
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///step02-2²MI´º
///glutSolidSphere(0.02, 30, 30);///正中心的圓球
glutSolidTeapot(0.3);///step02-1身體
glPushMatrix();
///step02-1先註解掉///glTranslatef
glTranslatef(0.5, 0.13, 0);///step02-2新的
glRotatef(angle, 0, 0, 1);///(2)就可以轉動
glTranslatef(0.46, -0.05, 0);///(1)把旋轉中心放到中心
glutSolidTeapot(0.3);
glPushMatrix();
///step02-1先註解掉///glTranslatef
glTranslatef(0.5, 0.13, 0);///step02-2新的
glRotatef(angle, 0, 0, 1);///(2)就可以轉動
glTranslatef(0.46, -0.05, 0);///(1)把旋轉中心放到中心
glutSolidTeapot(0.3);
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week06");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
Step02-3
要再開一個新的程式 改用上週的glutSolidCube()變形成長方形 慢慢建出TRT多層的關係
///week06-3_TRT_robot_arm_hand_right_left從上週的week05-2拿來用
#include <GL/glut.h>
float angle=0;///step02-2
void drawHand()
{
glPushMatrix();
glScalef(1, 0.3, 0.3);
glutSolidCube(0.5);
glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///step02-2²MI´º
glPushMatrix();
///要掛上去
glRotatef(angle, 0, 0, 1);///(2)轉動
glTranslatef(0.25, 0, 0);///(1)把中心放到正中心
///glTranslatef(0.5, 0.5, 0);///step03-3先註解掉
drawHand();
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();
}
Step03-1
Step03-2
做左右手臂
///week06-3_TRT_robot_arm_hand_right_left從上週的week05-2拿來用
#include <GL/glut.h>
float angle=0;///step02-2
void drawHand()
{
glPushMatrix();
glScalef(1, 0.3, 0.3);
glutSolidCube(0.5);
glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///step02-2²MI´º
glPushMatrix();
///要掛上去
glTranslatef(0.25, 0, 0);///(3)要掛上去
glRotatef(angle, 0, 0, 1);///(2)轉動
glTranslatef(0.25, 0.5, 0);///(1)把中心放在正中心
drawHand();///右上手臂
glPushMatrix();
glTranslatef(0.25, 0, 0);///(3)要掛上去
glRotatef(angle, 0, 0, 1);///(2)轉動
glTranslatef(0.25, 0, 0);///(1)把中心放在正中心
drawHand();///右下手肘
glPopMatrix();
glPopMatrix();
glPushMatrix();
///要掛上去
glTranslatef(-0.25, 0, 0);///(3)要掛上去
glRotatef(angle, 0, 0, 1);///(2)轉動
glTranslatef(-0.25, 0.5, 0);///(1)把中心放在正中心
drawHand();///上手臂
glPushMatrix();
glTranslatef(-0.25, 0, 0);///(3)要掛上去
glRotatef(angle, 0, 0, 1);///(2)轉動
glTranslatef(-0.25, 0, 0);///(1)把中心放在正中心
drawHand();///下手肘
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week06");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
Step03-3
模擬期中考







沒有留言:
張貼留言