作業 1
Step 1. 建立專案,顯示方塊圖程式碼 :
#include <GL/glut.h>
void display()
{
glutWireCube (0.3);
glutSwapBuffers ();
}
int main (int argc , char **argv)
{
glutInit (&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow ("Robot");
glutDisplayFunc(display);
glutMainLoop();
}
作業 2
轉動
#include <GL/glut.h>
float rot1=0;
void display()
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix ();
glutSolidTeapot(0.2)
glRotatef (rot1,0,0,1);
glTranslatef (0.6,0,0);
glRotatef (rot1*3,0,0,1);
glutSolidTeapot(0.2);
glPopMatrix ();
glutSwapBuffers ();
}
void motion (int x,int y)
{
rot1=x;
glutPostRedisplay ();
}
int main (int argc , char **argv)
{
glutInit (&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow ("Robot");
glutDisplayFunc(display);
glutMotionFunc(motion);
glutMainLoop();
}
作業 3
Step 1. 機器人雛形
程式碼 :
#include <GL/glut.h>
float rot1=0;
void display()
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix ();
glutWireCube (0.2);
glPushMatrix ();
glTranslatef (0,0.15,0);
glutWireCube (0.1);
glPopMatrix ();
glPushMatrix (); ///右手的模型
glTranslatef (0.15,0,0);
glutWireCube (0.1);
glTranslatef (0.1,0,0);
glutWireCube (0.1);
glTranslatef (0.08,0,0);
glutWireCube (0.05);
glPopMatrix ();
glPushMatrix (); ///左手的模型
glTranslatef (-0.15,0,0);
glutWireCube (0.1);
glTranslatef (-0.1,0,0);
glutWireCube (0.1);
glTranslatef (-0.08,0,0);
glutWireCube (0.05);
glPopMatrix ();
glPopMatrix ();
glutSwapBuffers ();
}
void motion (int x,int y)
{
rot1=x;
glutPostRedisplay ();
}
int main (int argc , char **argv)
{
glutInit (&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow ("Robot");
glutDisplayFunc(display);
glutMotionFunc(motion);
glutMainLoop();
}
Step 2 . 加旋轉
程式碼 :
#include <GL/glut.h>
float rot1=0;
void display()
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix ();
glutWireCube (0.2);
glPushMatrix ();
glTranslatef (0,0.15,0);
glutWireCube (0.1);
glPopMatrix ();
glPushMatrix (); ///右手的模型
///glTranslatef (0.15,0,0);
glTranslatef (0.1,0.05,0); /// 0.1+
glRotatef (rot1,0,0,1);
glTranslatef (0.05,0,0); /// 0.05+ _ 共 0.15
glutWireCube (0.1);
///glTranslatef (0.1,0,0);
glTranslatef (0.05,0,0); /// 0.05+
glRotatef (rot1,0,0,1);
glTranslatef (0.05,0,0); /// 0.05+ _ 共 0.1
glutWireCube (0.1);
///glTranslatef (0.08,0,0);
glTranslatef (0.05,0,0); /// 0.05+
glRotatef (rot1,0,0,1);
glTranslatef (0.05,0,0); /// 0.05+ _ 共 0.1
glutWireCube (0.05);
glPopMatrix ();
glPushMatrix (); ///左手的模型
///glTranslatef (-0.15,0,0);
glTranslatef (-0.1,0.05,0); /// -0.1+
glRotatef (rot1,0,0,1);
glTranslatef (-0.05,0,0); /// -0.05+ _ 共 -0.15
glutWireCube (0.1);
///glTranslatef (-0.1,0,0);
glTranslatef (-0.05,0,0); /// -0.05+
glRotatef (rot1,0,0,1);
glTranslatef (-0.05,0,0); /// -0.05+ _ 共 -0.1
glutWireCube (0.1);
///glTranslatef (-0.08,0,0);
glTranslatef (-0.05,0,0); /// -0.05+
glRotatef (rot1,0,0,1);
glTranslatef (-0.05,0,0); /// -0.05+ _ 共 -0.1
glutWireCube (0.05);
glPopMatrix ();
glPopMatrix ();
glutSwapBuffers ();
}
void motion (int x,int y)
{
rot1=x;
glutPostRedisplay ();
}
int main (int argc , char **argv)
{
glutInit (&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow ("Robot");
glutDisplayFunc(display);
glutMotionFunc(motion);
glutMainLoop();
}
#include <GL/glut.h>
float rot1=0;
void display()
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix ();
glutWireCube (0.2);
glPushMatrix ();
glTranslatef (0,0.15,0);
glutWireCube (0.1);
glPopMatrix ();
glPushMatrix (); ///右手的模型
///glTranslatef (0.15,0,0);
glTranslatef (0.1,0.05,0); /// 0.1+
glRotatef (rot1,0,0,1);
glTranslatef (0.05,0,0); /// 0.05+ _ 共 0.15
glutWireCube (0.1);
///glTranslatef (0.1,0,0);
glTranslatef (0.05,0,0); /// 0.05+
glRotatef (rot1,0,0,1);
glTranslatef (0.05,0,0); /// 0.05+ _ 共 0.1
glutWireCube (0.1);
///glTranslatef (0.08,0,0);
glTranslatef (0.05,0,0); /// 0.05+
glRotatef (rot1,0,0,1);
glTranslatef (0.05,0,0); /// 0.05+ _ 共 0.1
glutWireCube (0.05);
glPopMatrix ();
glPushMatrix (); ///左手的模型
///glTranslatef (-0.15,0,0);
glTranslatef (-0.1,0.05,0); /// -0.1+
glRotatef (rot1,0,0,1);
glTranslatef (-0.05,0,0); /// -0.05+ _ 共 -0.15
glutWireCube (0.1);
///glTranslatef (-0.1,0,0);
glTranslatef (-0.05,0,0); /// -0.05+
glRotatef (rot1,0,0,1);
glTranslatef (-0.05,0,0); /// -0.05+ _ 共 -0.1
glutWireCube (0.1);
///glTranslatef (-0.08,0,0);
glTranslatef (-0.05,0,0); /// -0.05+
glRotatef (rot1,0,0,1);
glTranslatef (-0.05,0,0); /// -0.05+ _ 共 -0.1
glutWireCube (0.05);
glPopMatrix ();
glPopMatrix ();
glutSwapBuffers ();
}
void motion (int x,int y)
{
rot1=x;
glutPostRedisplay ();
}
int main (int argc , char **argv)
{
glutInit (&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow ("Robot");
glutDisplayFunc(display);
glutMotionFunc(motion);
glutMainLoop();
}




沒有留言:
張貼留言