電腦圖學
WEEK06
今天上課就是一個悲劇,早上上課沒朋友,MAYA也還沒做QQ,程式碼又亂掉,好難過
希望趕快連假
那首先今天先畫出一個藍色的長方形,然後讓它旋轉,簡單吧呵呵╰(*°▽°*)╯
前提要緊:程式碼從後面看上來比較好喔
程式碼:
#include <GL/glut.h>
#include <stdio.h>
float vx[2000],vy[2000];
float angle=0;
int N=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix(); ///備分矩陣
glRotatef(angle,0,0,1); ///選轉矩陣
glScalef(0.5,0.1,0.1); ///調成細長的
glColor3f(0.3,0.3,1.0); ///藍藍的
glutSolidCube(1); ///方塊
glPopMatrix(); ///還原矩陣
glutSwapBuffers();
}
void motion(int x,int y) ///mouse
{
angle++; ///增加角度
display(); ///增加後重畫畫面
}
那因為進度亂掉了,所以從新來過,開始!!
做出會轉的正方形
程式碼:
#include <GL/glut.h>
#include <stdio.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix(); ///備分矩陣
glRotatef(angle++,0,0,1); ///選轉矩陣
glutSolidCube(1); ///方塊
glPopMatrix(); ///還原矩陣
glutSwapBuffers();
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
glutCreateWindow("Week06 08160971");
glutIdleFunc(display); ///很閒的時候重複畫面,display()
glutDisplayFunc(display);
glutMainLoop();
}
把正方形拉皮做出長方形,然後逆時針旋轉
程式碼:
#include <GL/glut.h>
#include <stdio.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix(); ///備分矩陣
Translatef(0,0,0);///(3)把正確的手臂掛在肩上
glRotatef(angle++,0,0,1); ///(2)轉動
glTranslatef(-0.25,0,0); ///(1)將旋轉中心
glScalef(0.5,0.1,0.1);///細細長長的
glutSolidCube(1); ///方塊
glPopMatrix(); ///還原矩陣
glutSwapBuffers();
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
glutCreateWindow("Week06 08160971");
glutIdleFunc(display); ///很閒的時候重複畫面,display()
glutDisplayFunc(display);
glutMainLoop();
}
再做出像指針一樣的轉
程式碼:#include <GL/glut.h>
#include <stdio.h>
float angle=0;
void hand()
{
glPushMatrix();
glScalef(0.5,0.1,0.1); ///細細長長的
glutSolidCube(1); ///方塊
glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(-0.25,0,0);///把正確的手臂掛在肩上
glRotatef(angle++,0,0,1); ///轉動
glTranslatef(-0.25,0,0); ///旋轉中心
hand();
glPopMatrix();
hand();
glutSwapBuffers();
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
glutCreateWindow("Week06 08160971");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
做出像機器人的手臂,逆時鐘大風吹!!
程式碼:#include <GL/glut.h>
#include <stdio.h>
float angle=0;
void hand()
{
glPushMatrix();
glScalef(0.5,0.1,0.1);
glutSolidCube(1);
glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glTranslatef(-0.25,0,0);///(3)把正確的手臂掛在肩關節
glRotatef(angle,0,0,1); ///(2)轉動
glTranslatef(-0.25,0,0); ///(1)旋轉中心
hand();///上手臂
glPushMatrix();
glTranslatef(-0.25,0,0);///(3)把正確的手臂掛在肩上
glRotatef(angle,0,0,1); ///(2)轉動
glTranslatef(-0.25,0,0); ///(1)旋轉中心
hand();///下手肘
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
glutCreateWindow("Week06 08160971");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
那因為人有兩隻手,所以做出另一半才完整,好可憐我的另一半呢,我完整嗎?
程式碼:
#include <GL/glut.h>
#include <stdio.h>
float angle=0;
void hand()
{
glPushMatrix();
glScalef(0.5,0.1,0.1);
glutSolidCube(1);
glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix(); ///左半邊
glTranslatef(-0.25,0,0);///(3)把正確的手臂掛在肩關節
glRotatef(angle,0,0,1); ///(2)轉動
glTranslatef(-0.25,0,0); ///(1)旋轉中心
hand();///上手臂
glPushMatrix();
glTranslatef(-0.25,0,0);///(3)把正確的手臂掛在肩上
glRotatef(angle,0,0,1); ///(2)轉動
glTranslatef(-0.25,0,0); ///(1)旋轉中心
hand();///下手肘
glPopMatrix();
glPopMatrix();
glPushMatrix(); ///右半邊
glTranslatef(+0.25,0,0);///(3)把正確的手臂掛在肩關節
glRotatef(-angle,0,0,1); ///(2)轉動
glTranslatef(+0.25,0,0); ///(1)旋轉中心
hand();///上手臂
glPushMatrix();
glTranslatef(+0.25,0,0);///(3)把正確的手臂掛在肩上
glRotatef(-angle,0,0,1); ///(2)轉動
glTranslatef(+0.25,0,0); ///(1)旋轉中心
hand();///下手肘
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
angle++;
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
glutCreateWindow("Week06 08160971");
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
記得今天有作業3喔,別混了:))))) 但我還是想放假
接下來是加課的開始 再痛苦50分鐘吧
回家作業:製作機器人
給大家看看我可愛的機器人吧
程式碼:



沒有留言:
張貼留言