week06-1
[week06-1]
打開CodeBlocks,File,New,Project,OpenGL
選擇OpenGL Project
打標題後選擇桌面
開啟5-2的程式碼
加上一個小圓點讓茶壺的手把變成中心點在轉動
glutSolidSphere(0.01,30,30);
glPushMatrix();
glRotatef(angle,0,0,1);
glTranslatef(0.45,0,0);
glutSolidTeapot(0.3);
glPopMatrix();
新增 glTranslatef(0.5,0.5,0);
讓茶壺的手把掛在右上方[week06-2]
貼上前一個作業的程式碼註解掉rotate translate
在放上小方塊
再加入rotate translate
複製
glPushMatrix();
glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();
glPopMatrix();
再貼上一次
分成右邊上下手臂 左邊上下手臂
#include <GL/glut.h>
float angle = 0;
void myCube()
{
glPushMatrix();
glScalef(1,0.3,0.3);
glutSolidCube(0.5);
glPopMatrix();
}
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidSphere(0.01,30,30);
glPushMatrix();///右
glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();///上手臂
glPushMatrix();
glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();///下手臂
glPopMatrix();
glPopMatrix();
glPushMatrix();///左
glTranslatef(-0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(-0.25,0,0);
myCube();///上手臂
glPushMatrix();
glTranslatef(-0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(-0.25,0,0);
myCube();///下手臂
glPopMatrix();
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();
}
新增giutMotionFunc讓滑鼠可以控制手臂
#include <GL/glut.h>
float angle = 0;
void myCube()
{
glPushMatrix();
glScalef(1,0.3,0.3);
glutSolidCube(0.5);
glPopMatrix();
}
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidSphere(0.01,30,30);
glPushMatrix();///右
glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();///上手臂
glPushMatrix();
glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();///下手臂
glPopMatrix();
glPopMatrix();
glPushMatrix();///左
glTranslatef(-0.25,0,0);
glRotatef(-angle,0,0,1);
glTranslatef(-0.25,0,0);
myCube();///上手臂
glPushMatrix();
glTranslatef(-0.25,0,0);
glRotatef(-angle,0,0,1);
glTranslatef(-0.25,0,0);
myCube();///下手臂
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
/// angle++;
}
void motion(int x,int y)
{
angle=x;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week06");
glutMotionFunc(motion);
glutDisplayFunc(display);
glutIdleFunc(display);\
glutMainLoop();
}
這裡









沒有留言:
張貼留言