week06
step01-1
開啟新專案複製上周最後一個程式
#include <GL/glut.h>
float angle=0;
void myCube()
{
glPushMatrix();
glScaled(0.5,0.2,0.2);
glutSolidCube(1);
glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(1,1,1);
glutSolidCube(1);
glPushMatrix();
glTranslatef(0.5,0.5,0);
glRotated(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(0,1,0);
myCube();
glPopMatrix();
glPushMatrix();
glTranslatef(-0.5,0.5,0);
glRotated(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(0,1,0);
myCube();
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();
}
刪除部分以及改寫部分
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glutSolidSphere(0.01,30,30);
glPushMatrix();
glRotated(angle,0,0,1);
glTranslatef(0.45,0,0);
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();
}
step01-3
複製上面程式多加一行使位置改變
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glutSolidSphere(0.01,30,30);
glPushMatrix();
glTranslatef(0.5,0.5,0);
glRotated(angle,0,0,1);
glTranslatef(0.45,0,0);
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();
}
先做一個小方塊
#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.5,0.5,0);
/// glRotated(angle,0,0,1);
/// glTranslatef(0.45,0,0);
/// glutSolidTeapot(0.3);
myCube();
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();
}
增加兩行改變位置
#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.5,0.5,0);
glRotated(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();
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();
}
修改02-2
#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);
glRotated(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();
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();
}
修改02-3
#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);
glRotated(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();
glPushMatrix();
glTranslatef(0.25,0,0);
glRotated(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("week06");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
開啟新的專案,複製上個程式再加相同的程式,把x軸改為負的
#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);
glRotated(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();
glPushMatrix();
glTranslatef(0.25,0,0);
glRotated(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();
glPopMatrix();
glPopMatrix();
glPushMatrix();
glTranslatef(-0.25,0,0);
glRotated(angle,0,0,1);
glTranslatef(-0.25,0,0);
myCube();
glPushMatrix();
glTranslatef(-0.25,0,0);
glRotated(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("week06");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
開啟新的專案,複製上一個程式再增加一小部分(紅色)刪除(藍色)
#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);
glRotated(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();
glPushMatrix();
glTranslatef(0.25,0,0);
glRotated(angle,0,0,1);
glTranslatef(0.25,0,0);
myCube();
glPopMatrix();
glPopMatrix();
glPushMatrix();
glTranslatef(-0.25,0,0);
glRotated(-angle,0,0,1);
glTranslatef(-0.25,0,0);
myCube();
glPushMatrix();
glTranslatef(-0.25,0,0);
glRotated(-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();
}
上傳github
沒有留言:
張貼留言