1.期中考試
2.Freeglut
①基礎形狀:
Sphere:球體 Cone:圓錐 Torus:甜甜圈形狀
(如圖所示~)
***修改參數可以改變它的大小與粗細
②畫一個正方形:
PS程式碼:
#include <Gl/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidCube(0.5);
glutSwapBuffers();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09");
glutDisplayFunc(display);
glutMainLoop();
}
③改變正方形的長寬
(稍微改下就有改變了~)
PS程式碼:
#include <Gl/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();///備份
glScalef(1,0.3,0.3);///x不變,y,z都變1/3
glutSolidCube(0.5);
glPopMatrix();///還原
glutSwapBuffers();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09");
glutDisplayFunc(display);
glutMainLoop();
}
④讓長方形旋轉
(長方形以中心為軸在旋轉了~~)
PS程式碼:
#include <Gl/glut.h>
void upper_arm()
{
glPushMatrix();///備份
glScalef(1,0.3,0.3);///x不變,y,z都變1/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("week09");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
⑤改變長方形旋轉的軸
(長方形以邊邊為軸在旋轉了~~只增加了一行程式碼哦٩꒰▽ ꒱۶⁼³₌₃ )
PS程式碼:
#include <Gl/glut.h>
void upper_arm()
{
glPushMatrix();///備份
glScalef(1,0.3,0.3);///x不變,y,z都變1/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軸旋
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("week09");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
⑤-2改變長方形旋轉的軸
(長方形被掛到右上角了~~只有改變程式碼的位置哦d=====( ̄▽ ̄*)b 讚)
PS程式碼:
#include <Gl/glut.h>
void upper_arm()
{
glPushMatrix();///備份
glScalef(1,0.3,0.3);///x不變,y,z都變1/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("week09");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
⑥旋轉的機器人手臂
(有兩隻手臂會旋轉誒~是不是很厲害~~)
PS程式碼:
#include <Gl/glut.h>
void arm()
{
glPushMatrix();///備份
glScalef(1,0.3,0.3);///x不變,y,z都變1/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);///對z軸旋
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();///還原
glPushMatrix();///左手
glTranslatef(-0.2,0,0);///把下面正在以手肘為中心轉動的手掛到右上角
glRotatef(-angle,0,0,1);///對z軸旋
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();///還原
angle++;
glutSwapBuffers();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week09");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}







沒有留言:
張貼留言