Week06
Week 06-1.1
Step 1:先開啟CodeBlock並開啟OpenGL project
Step 2:複製上周的程式碼
程式碼:
#include<GL/glut.h>
float angle = 0;
void myCube()
{
glPushMatrix();
glScalef(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);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(0,1,0);
myCube();
glPopMatrix();
glPushMatrix();
glTranslatef(-0.5,0.5,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(0,1,0);
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc,char *argv[])
{
glutInit(&argc , argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE |GL_DEPTH);
glutCreateWindow("week05");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
Step 3:把display()改畫茶壺
display()的新程式碼:void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidSphere(0.01, 30, 30);
glPushMatrix();
glRotatef(angle, 0, 0, 1);
glTranslatef(0.45, 0, 0);
glutSolidTeapot( 0.3 );
glPopMatrix();
glutSwapBuffers();
angle++;
}
Step 4:觀察圖形轉動,完成!
Step 1:先開啟CodeBlock並import OpenGL project
Step 2:複製上面的程式碼
Step 3:將display()的程式碼修改為:
display():
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidSphere(0.01,30,30);
glPushMatrix();
glTranslatef(0.5,0.5,0);
glRotatef(angle,0,0,1);
glTranslatef(0.45,0,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
angle++;
}
Step 4:觀察圖案變化,可發現圖案往右上偏移
Week 06-2.2
Step 1:開啟新的GLUT project
Step 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();
glRotatef(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();
}
Step 3:出現矩形,矩形逆時鐘旋轉
Week 06-3
Week06-3.1
Step 1:再開啟一個GLUT project
Step 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);
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("week06");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
Step 3:圖形多了一個矩形
Week 06-3.2
Step 1:再開啟一個GLUT project
Step 2:複製下列程式碼進GLUT project
程式碼:
#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("week06");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
Step 3:可發現圖形變為4個矩形
這次主要是在display新增幾個程式碼:
先用glTranslatef(); 更改位置
再用 glRotatef(); 更改選轉角度
再用 myCube()創建一個矩形
沒有留言:
張貼留言