課堂作業一 : 兩個茶壺 ~ ~ (機器人Robot)
新增專案 - 貝殼空專案 - c++ - 路徑設桌面 - 右鍵build設freeglut include & freeglut lib &五咒語
記得要把freeglut.dll放進程式資料夾裡歐(不能拿x64裡面的) ~ ~ ~
帥氣程式碼 >"< :
#include <GL/glut.h>
void display()
{
glPushMatrix();
glutSolidTeapot(0.3); //茶壺1號機
glTranslatef(0.5, 0, 0);
glutSolidTeapot(0.3); //茶壺2號機
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Robot");
glutDisplayFunc(display);
glutMainLoop();
}
成品 :
課堂作業二 : 旋轉茶壺
改良版一 : 自轉
程式碼 -
#include <GL/glut.h>
float rot1=0;
void display()
{
glPushMatrix();
glutSolidTeapot(0.3);
glTranslatef(0.5, 0, 0);
glRotatef(rot, 0,0,1);
glutSolidTeapot(0.3);
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();
glutSolidTeapot(0.3);
glRotatef(rot1, 0,0,1);
glTranslatef(0.5, 0, 0);
glRotatef(rot1, 0,0,1);
glutSolidTeapot(0.3);
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();
glutSolidTeapot(0.2);
glTranslatef(0.33, 0.05, 0);///step 3: let below 1-2 to be in (0.5, 0.5);
glRotatef(rot1, 0,0,1);///step 1: prepare rotate
glTranslatef(0.25, 0, 0);///step 2: let the teapot handle be ratating center
glutSolidTeapot(0.2);
glTranslatef(0.33, 0.05, 0);///step 3: let below 1-2 to be in (0.5, 0.5);
glRotatef(rot1, 0,0,1);///step 1: prepare rotate
glTranslatef(0.25, 0, 0);///step 2: let the teapot handle be ratating center
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();
}
成品 :
課堂作業四 : 我來組成頭部 機器人 ~ ~
程式碼 -
#include <GL/glut.h>
float rot1=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glPushMatrix();
glutWireCube(0.3);///body
glPushMatrix();
glTranslatef(0, 0.2, 0);
glutWireCube(0.1);///head
glPopMatrix();
glPushMatrix();
glTranslatef(0.2, 0.1, 0);
glutWireCube(0.1);///upper arm
glTranslatef(0.1, 0, 0);
glutWireCube(0.1);///lower arm
glTranslatef(0.1, 0, 0);
glutWireCube(0.1);///right hand
glPopMatrix();
glPushMatrix();
glTranslatef(-0.2, 0.1, 0);
glutWireCube(0.1);///upper arm
glTranslatef(-0.1, 0, 0);
glutWireCube(0.1);///lower arm
glTranslatef(-0.1, 0, 0);
glutWireCube(0.1);///right hand
glPopMatrix();
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();
glPushMatrix();
glutWireCube(0.3);///body
glPushMatrix();
glTranslatef(0, 0.2, 0);
glutWireCube(0.1);///head
glPopMatrix();
glPushMatrix();
glTranslatef(0.15, 0.1, 0);
glRotatef(rot1,0,0,1);
glTranslatef(0.05, 0, 0);
glutWireCube(0.1);///upper arm
glTranslatef(0.05, 0, 0);
glRotatef(rot1,0,0,1);
glTranslatef(0.05, 0, 0);
glutWireCube(0.1);///lower arm
glTranslatef(0.05, 0, 0);
glRotatef(rot1,0,0,1);
glTranslatef(0.05, 0, 0);
glutWireCube(0.1);///right hand
glPopMatrix();
glPushMatrix();
///glTranslatef(-0.2, 0.1, 0);
glTranslatef(-0.15, 0.1, 0);
glRotatef(-rot1,0,0,1);
glTranslatef(-0.05, 0, 0);
glutWireCube(0.1);///upper arm
///glTranslatef(-0.1, 0, 0);
glTranslatef(-0.05, 0, 0);
glRotatef(-rot1,0,0,1);
glTranslatef(-0.05, 0, 0);
glutWireCube(0.1);///lower arm
///glTranslatef(-0.1, 0, 0);
glTranslatef(-0.05, 0, 0);
glRotatef(-rot1,0,0,1);
glTranslatef(-0.05, 0, 0);
glutWireCube(0.1);///right hand
glPopMatrix();
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();
glPushMatrix();
glutWireCube(0.3);///body
glPushMatrix();
glTranslatef(0, 0.2, 0);
glutWireCube(0.1);///head
glPopMatrix();
glPushMatrix();
glTranslatef(0.2, 0.1, 0);
glutWireCube(0.1);///upper arm
glTranslatef(0.1, 0, 0);
glutWireCube(0.1);///lower arm
glTranslatef(0.1, 0, 0);
glutWireCube(0.1);///right hand
glPopMatrix();
glPushMatrix();
glTranslatef(-0.2, 0.1, 0);
glutWireCube(0.1);///upper arm
glTranslatef(-0.1, 0, 0);
glutWireCube(0.1);///lower arm
glTranslatef(-0.1, 0, 0);
glutWireCube(0.1);///right hand
glPopMatrix();
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();
glPushMatrix();
glutWireCube(0.3);///body
glPushMatrix();
glTranslatef(0, 0.2, 0);
glutWireCube(0.1);///head
glPopMatrix();
glPushMatrix();
glTranslatef(0.15, 0.1, 0);
glRotatef(rot1,0,0,1);
glTranslatef(0.05, 0, 0);
glutWireCube(0.1);///upper arm
glTranslatef(0.05, 0, 0);
glRotatef(rot1,0,0,1);
glTranslatef(0.05, 0, 0);
glutWireCube(0.1);///lower arm
glTranslatef(0.05, 0, 0);
glRotatef(rot1,0,0,1);
glTranslatef(0.05, 0, 0);
glutWireCube(0.1);///right hand
glPopMatrix();
glPushMatrix();
///glTranslatef(-0.2, 0.1, 0);
glTranslatef(-0.15, 0.1, 0);
glRotatef(-rot1,0,0,1);
glTranslatef(-0.05, 0, 0);
glutWireCube(0.1);///upper arm
///glTranslatef(-0.1, 0, 0);
glTranslatef(-0.05, 0, 0);
glRotatef(-rot1,0,0,1);
glTranslatef(-0.05, 0, 0);
glutWireCube(0.1);///lower arm
///glTranslatef(-0.1, 0, 0);
glTranslatef(-0.05, 0, 0);
glRotatef(-rot1,0,0,1);
glTranslatef(-0.05, 0, 0);
glutWireCube(0.1);///right hand
glPopMatrix();
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();
}
成品 :
沒有留言:
張貼留言