我應該是第8周
首先改了甜甜圈的厚度:
glutSolidTorus(厚度,0.8,slices,stacks);
改這行程式碼就變這樣
Sphere:圓形
Cone:圓錐
Torus:甜甜圈狀
再來再來:
會旋轉的長方體
}
Sphere:圓形
Cone:圓錐
Torus:甜甜圈狀
再來再來:
會旋轉的長方體
#include <Gl/glut.h>
void upper_arm()
{
glPushMatrix();
glScalef(1,03.,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);
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();
}
會繞著中心點旋轉的長方體多家一行程式碼
#include <Gl/glut.h>
void upper_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();
glRotatef(angle, 0,0,1);
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();
}
結果如圖:
接下來老師在講考試的東西
#include <Gl/glut.h>
void upper_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.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();
}
老師之後又講了機器人手臂
#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();
/// 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();
}
以下為說明與結果
上圖的機器手會繞圈圈
但我們讓他在某個地方就停下來
所以得新增加下列程式碼:
#include <Gl/glut.h>
void arm()
{
glPushMatrix();
glScalef(1,0.3,0.3);
glutSolidCube(0.5);
glPopMatrix();
}
float angle=0;
int dx;
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();
/// upper_arm();
///glPopMatrix();
angle+=dx;
if(angle>60) dx=-1;
if(angle<10) dx=+1;
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week09");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
手就會打開又在合起來了







沒有留言:
張貼留言