1.File-New-Project, GLUT專案, week10-1 TRT glutSolidCube myBody myArm
2.貼上上週的 week09-2 的程式
3.要用 glutSolidCube(0.3)用兩次,紅色的身體,綠色的手臂
4.目標:用方塊,組出今天的程式
5.把身體的程式,放到 void myBody() 函式裡
6.把手臂的程式,放到 void myArm() 函式裡
cpp>>>>>>>>>>
#include <GL/glut.h>
void myBody(){
glColor3f(1,0,0);
glutSolidCube( 0.3 );
}
void myArm(){
glColor3f(0,1,0);
glScalef(1.5,0.5,0.5);
glutSolidCube(0.3);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(-0.6, +0.3, 0);
myBody();
glPopMatrix();
glPushMatrix();
glTranslatef(+0.0, +0.3, 0);
myArm();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week09-2 glutSolid系列");
glutDisplayFunc(display);
glutMainLoop();
}
開一個新的專案
貼上week10-1的程式
cpp>>>>>>>>
#include <GL/glut.h>
void myBody(){
glColor3f(1,0,0);
glutSolidCube( 0.3 );
}
void myArm(){
glColor3f(0,1,0);
glScalef(1.5,0.5,0.5);
glutSolidCube(0.3);
}
float angle=0;///week10-2
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(-0.6, +0.3, 0);
myBody();
glPopMatrix();
glPushMatrix();
///glTranslatef(+0.0, +0.3, 0);
glRotatef(angle++,0,0,1);///week10-2
myArm();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week09-2 glutSolid系列");
glutDisplayFunc(display);
glutIdleFunc(display);///week10-2
glutMainLoop();
}
1.開新專案
2.貼上week10-2的程式
3.加一行讓他的旋轉中心改變
cpp>>>>>>
#include <GL/glut.h>
void myBody(){
glColor3f(1,0,0);
glutSolidCube( 0.3 );
}
void myArm(){
glColor3f(0,1,0);
glScalef(1.5,0.5,0.5);
glutSolidCube(0.3);
}
float angle=0;///week10-2
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(-0.6, +0.3, 0);
myBody();
glPopMatrix();
glPushMatrix();
///glTranslatef(+0.0, +0.3, 0);
glRotatef(angle++,0,0,1);///week10-2
glTranslatef(0.225,0,0);
myArm();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week09-2 glutSolid系列");
glutDisplayFunc(display);
glutIdleFunc(display);///week10-2
glutMainLoop();
}
開一個新的專案
貼上week10-3的程式
cpp>>>>>
#include <GL/glut.h>
void myBody(){
glColor3f(1,0,0);
glutWireCube( 0.6 );
}
void myArm(){
glPushMatrix();
glColor3f(0,1,0);
glScalef(1.5,0.5,0.5);
glutWireCube(0.3);
glPopMatrix();
}
float angle=0;///week10-2
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
///glTranslatef(-0.6, +0.3, 0);
myBody();
glPopMatrix();
glPushMatrix();
glTranslatef(+0.3, +0.3, 0);///掛在肩上
glRotatef(angle++,0,0,1);///week10-2
glTranslatef(0.225,0,0);///把旋轉中心移到正中心
myArm();///右手臂
glPushMatrix();
glTranslatef(0.225,0, 0);///掛在手肘位置上
glRotatef(angle++,0,0,1);///week10-2
glTranslatef(0.225,0,0);///把旋轉中心移到正中心
myArm();///右手肘
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week09-2 glutSolid系列");
glutDisplayFunc(display);
glutIdleFunc(display);///week10-2
glutMainLoop();
}
手臂手肘都會轉動
cpp>>>>>
#include <GL/glut.h>
void myBody(){
glColor3f(1,0,0);
glutWireCube( 0.6 );
}
void myArm(){
glPushMatrix();
glColor3f(0,1,0);
glScalef(1.5,0.5,0.5);
glutWireCube(0.3);
glPopMatrix();
}
float angle=0;///week10-2
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
///glTranslatef(-0.6, +0.3, 0);
myBody();
glPopMatrix();
glPushMatrix();
glTranslatef(+0.3, +0.3, 0);///掛在肩上
glRotatef(angle++,0,0,1);///week10-2
glTranslatef(0.225,0,0);///把旋轉中心移到正中心
myArm();///右手臂
glPushMatrix();
glTranslatef(0.225,0, 0);///掛在手肘位置上
glRotatef(angle++,0,0,1);///week10-2
glTranslatef(0.225,0,0);///把旋轉中心移到正中心
myArm();///右手肘
glPopMatrix();
glPopMatrix();
glPushMatrix();
glTranslatef(-0.3, +0.3, 0);///掛在肩上
glRotatef(angle++,0,0,1);///week10-2
glTranslatef(-0.225,0,0);///把旋轉中心移到正中心
myArm();///左手臂
glPushMatrix();
glTranslatef(-0.225,0, 0);///掛在手肘位置上
glRotatef(angle++,0,0,1);///week10-2
glTranslatef(-0.225,0,0);///把旋轉中心移到正中心
myArm();///左手肘
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week09-2 glutSolid系列");
glutDisplayFunc(display);
glutIdleFunc(display);///week10-2
glutMainLoop();
}
cpp>>>
#include <GL/glut.h>
void myBody(){
glColor3f(1,0,0);
glutWireCube( 0.6 );
}
void myArm(){
glPushMatrix();
glColor3f(0,1,0);
glScalef(1.5,0.5,0.5);
glutWireCube(0.3);
glPopMatrix();
}
float angle=0;///week10-2
void motion(int x, int y) {
angle = x;
glutPostRedisplay();///重畫畫面
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();
///glTranslatef(-0.6, +0.3, 0);
myBody();
glPopMatrix();
glPushMatrix();
glTranslatef(+0.3, +0.3, 0);///掛在肩上
glRotatef(angle,0,0,1);///week10-2
glTranslatef(0.225,0,0);///把旋轉中心移到正中心
myArm();///右手臂
glPushMatrix();
glTranslatef(0.225,0, 0);///掛在手肘位置上
glRotatef(angle,0,0,1);///week10-2
glTranslatef(0.225,0,0);///把旋轉中心移到正中心
myArm();///右手肘
glPopMatrix();
glPopMatrix();
glPushMatrix();
glTranslatef(-0.3, +0.3, 0);///掛在肩上
glRotatef(-angle,0,0,1);///week10-2
glTranslatef(-0.225,0,0);///把旋轉中心移到正中心
myArm();///左手臂
glPushMatrix();
glTranslatef(-0.225,0, 0);///掛在手肘位置上
glRotatef(-angle,0,0,1);///week10-2
glTranslatef(-0.225,0,0);///把旋轉中心移到正中心
myArm();///左手肘
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char*argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week09-2 glutSolid系列");
glutDisplayFunc(display);
glutIdleFunc(display);///week10-2
glutMotionFunc(motion);
glutMainLoop();
}
沒有留言:
張貼留言