接著上週作業的互評,選出三個自己覺得最好的作品。
之後打開codeblock開始課堂作業
因為上週大家都畫不太出來非常圓的圓,所以老師就講了一下
#include <GL/glut.h>
#include <math.h>
void display()
{
glBegin(GL_POLYGON);
for(float angle=0;angle<=3.1415926*2;angle+=0.01)
{
glVertex2f(cos(angle),sin(angle));
}
glEnd();
glutSwapBuffers();
}
int main(int argc,char *argv[])
{ glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("04160594 Number 1");
glutDisplayFunc(display);
glutMainLoop();
}
這是畫出圓的程式碼
接著我們要把球顏色亂變
接著我們要把球顏色亂變
#include <stdio.h>
#include <GL/glut.h>
#include <math.h>
void display()
{
glBegin(GL_POLYGON);
for(float angle=0;angle<=3.1415926*2;angle+=0.01)
{
glVertex2f(cos(angle),sin(angle));
}
glEnd();
glutSwapBuffers();
}
void mouse(int button,int state,int x,int y)
{
printf("%d %d %d %d\n",button,state,x,y);
glColor3f(1,x/300.0 ,y/300.0);
}
int main(int argc,char *argv[])
{ glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("04160594 Number 1");
glutDisplayFunc(display);
glutMouseFunc(mouse);
//glutMotionFunc(motion);
glutMainLoop();
}
之後不需要移動滑鼠也可以變顏色,只要加入
glutPostRedisplay();
最後做了一個小精靈的圖案,嘴巴可以自己調整張開閉上
#include <stdio.h>
#include <GL/glut.h>
#include <math.h>
float mouth=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glBegin(GL_TRIANGLE_FAN);
glVertex2f(0, 0);
for(float angle=0+mouth;angle<=3.1415926*2-mouth;angle+=3.1415926/100)
{
glVertex2f(cos(angle),sin(angle));
}
glEnd();
glutSwapBuffers();
}
void mouse(int button,int state,int x,int y)
{
// printf("%d %d %d %d\n",button,state,x,y);
//glColor3f(1,x/300.0 ,y/300.0);
}
void motion(int x,int y)
{ mouth=x/300.0;
glColor3f(1,x/300.0 ,y/300.0);
glutPostRedisplay();
}
int main(int argc,char *argv[])
{ glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("04160594 Number 1");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutMainLoop();
}
沒有留言:
張貼留言