week08
今天的考試!!!!!
glPushMatrix();//備份矩陣 glTranslatef(x,y,z);//移動
glRotatef(angle,x,y,z);//轉動
glScalef(x,y,z);//縮放
glBegin(GL_POLYGON);//開始畫
glColor3f(r,g,b);//⾊彩
glTexCoord2f(tx,ty);//貼圖座標
glNormal3f(nx,ny,nz);//打光的法向量
glVertex2f(x,y);//頂點
glEnd();//結束畫
glPopMatrix();//還原矩陣
*Solid 實心的
glutSolidSphere( 1,slices,stacks); ==> 圓球
圓的半徑
glutSolidCone( 1, 1,slices,stacks); ==> 圓錐
錐體底面的半徑 錐體高度
glutSolidTorus( 0.2, 0.8,slices,stacks); ==> 甜甜圈
外圈的半徑 內圈的半徑
#include <Gl/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH);
glPushMatrix();///備份
glScalef(1,0.3,0.3);///放大縮小,x不變,y、z都變0.3
glutSolidCube(0.5);
glPopMatrix();///還原
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
glutDisplayFunc(display);
glutMainLoop();
}
程式碼:
#include <Gl/glut.h>
void upper_arm()
{
glPushMatrix();
glScalef(1,0.3,0.3);///放大縮小,x不變,y、z都變0.3
glutSolidCube(0.5);
glPopMatrix();///還原
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///備份
glRotatef(angle,0,0,1);///對z軸旋轉
upper_arm();///用函式呼叫自己寫的程式
glPopMatrix();///還原
angle++;
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
程式碼:
#include <Gl/glut.h>
void upper_arm()
{
glPushMatrix();///備份
glScalef(1,0.3,0.3);///放大縮小,x不變,y、z都變0.3
glutSolidCube(0.5);
glPopMatrix();///還原
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///備份
glTranslatef(0,0,0);///初始位置在(0,0,0)
glRotatef(angle,0,0,1);///對z軸旋轉
glTranslatef(0.25,0,0);///長方體中的中心改為(0.25,0,0),此點為旋轉的中心(改變旋轉半徑)
upper_arm();///畫手
glPopMatrix();///還原
angle++;
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
#include <Gl/glut.h>
void upper_arm()
{
glPushMatrix();
glScalef(1,0.3,0.3);///放大縮小,x不變,y、z都變0.3
glutSolidCube(0.5);
glPopMatrix();///還原
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///備份
glTranslatef(0.5,0.5,0);
glRotatef(angle,0,0,1);///對z軸旋轉
glTranslatef(0.25,0,0);
upper_arm();///畫手
glPopMatrix();///還原
angle++;
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
程式碼:
#include <Gl/glut.h>
void arm()
{
glPushMatrix();
glScalef(1,0.3,0.3);///放大縮小,x不變,y、z都變0.3
glutSolidCube(0.5);
glPopMatrix();///還原
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///備份
glTranslatef(0.3,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(1,0,0); arm();///畫手,上顏色(紅)
glPushMatrix();
glTranslatef(0.3,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(1,1,0); arm();///畫手,上顏色(黃)
glPopMatrix();
glPopMatrix();
angle++;
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
這張圖我改的是glutSolidSphere(圓球),我把他的半徑變小,改成1
印出一個實心的方體
程式碼:
#include <Gl/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH);
glutSolidCube(0.5);///實心方體
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
glutDisplayFunc(display);
glutMainLoop();
}
劃出長方體
程式碼:
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH);
glPushMatrix();///備份
glScalef(1,0.3,0.3);///放大縮小,x不變,y、z都變0.3
glutSolidCube(0.5);
glPopMatrix();///還原
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
glutDisplayFunc(display);
glutMainLoop();
}
寫一個讓方形旋轉的程式,以中心為圓點旋轉
#include <Gl/glut.h>
void upper_arm()
{
glPushMatrix();
glScalef(1,0.3,0.3);///放大縮小,x不變,y、z都變0.3
glutSolidCube(0.5);
glPopMatrix();///還原
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///備份
glRotatef(angle,0,0,1);///對z軸旋轉
upper_arm();///用函式呼叫自己寫的程式
glPopMatrix();///還原
angle++;
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
#include <Gl/glut.h>
void upper_arm()
{
glPushMatrix();///備份
glScalef(1,0.3,0.3);///放大縮小,x不變,y、z都變0.3
glutSolidCube(0.5);
glPopMatrix();///還原
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///備份
glTranslatef(0,0,0);///初始位置在(0,0,0)
glRotatef(angle,0,0,1);///對z軸旋轉
glTranslatef(0.25,0,0);///長方體中的中心改為(0.25,0,0),此點為旋轉的中心(改變旋轉半徑)
upper_arm();///畫手
glPopMatrix();///還原
angle++;
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
*改變整個方形的位置*
與前一張差在於 glTranslatef(0.5,0.5,0);,改變位置
程式碼:#include <Gl/glut.h>
void upper_arm()
{
glPushMatrix();
glScalef(1,0.3,0.3);///放大縮小,x不變,y、z都變0.3
glutSolidCube(0.5);
glPopMatrix();///還原
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///備份
glTranslatef(0.5,0.5,0);
glRotatef(angle,0,0,1);///對z軸旋轉
glTranslatef(0.25,0,0);
upper_arm();///畫手
glPopMatrix();///還原
angle++;
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
劃出一隻手臂,上顏色
#include <Gl/glut.h>
void arm()
{
glPushMatrix();
glScalef(1,0.3,0.3);///放大縮小,x不變,y、z都變0.3
glutSolidCube(0.5);
glPopMatrix();///還原
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///備份
glTranslatef(0.3,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(1,0,0); arm();///畫手,上顏色(紅)
glPushMatrix();
glTranslatef(0.3,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(1,1,0); arm();///畫手,上顏色(黃)
glPopMatrix();
glPopMatrix();
angle++;
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
*劃出兩隻手繞圈圈*
程式碼:#include <Gl/glut.h>
void arm()
{
glPushMatrix();
glScalef(1,0.3,0.3);
glutSolidCube(0.5);
glPopMatrix();
}
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///右手
glTranslatef(0.2,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(1,0,0); arm();///畫紅色的上手臂
glPushMatrix();
glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
glColor3f(1,1,0); arm();///畫黃色的下手臂
glPopMatrix();///還原
glPopMatrix();///還原
glPushMatrix();///左手
glTranslatef(-0.2,0,0);
glRotatef(-angle,0,0,1);
glTranslatef(-0.25,0,0);
glColor3f(1,0,0); arm();///畫紅色的上手臂
glPushMatrix();
glTranslatef(-0.25,0,0);
glRotatef(-angle,0,0,1);
glTranslatef(-0.25,0,0);
glColor3f(1,1,0); arm();///畫黃色的下手臂
glPopMatrix();///還原
glPopMatrix();///還原
glPopMatrix();
angle++;
glutSwapBuffers();
}








沒有留言:
張貼留言