1.票選出5位班上同學的作業
2.展示Transformation
3.用滑鼠點擊產生坐標
#include <GL/glut.h>
#include <stdio.h>
void mouse(int button,int state,int x,int y)//點擊滑鼠
{
if(state==GLUT_DOWN)
printf("glVertex2f((%d-150)/150.0,-(%d-150)/150.0);\n",x,y);//產生程式碼
}
void display()
{
glClearColor(150/255.0,170/255.0,55/255.0,1);//背景顏色
glClear(GL_COLOR_BUFFER_BIT);//背景漆上顏色
glColor3ub(185,193,81);//前景顏色
glBegin(GL_POLYGON);
glVertex2f((107-150)/150.0,-(103-150)/150.0);
glVertex2f((104-150)/150.0,-(172-150)/150.0);
glVertex2f((204-150)/150.0,-(179-150)/150.0);
glVertex2f((199-150)/150.0,-(111-150)/150.0);
glEnd();
glBegin(GL_POLYGON);
glVertex2f((19-150)/150.0,-(23-150)/150.0);
glVertex2f((23-150)/150.0,-(72-150)/150.0);
glVertex2f((86-150)/150.0,-(83-150)/150.0);
glVertex2f((92-150)/150.0,-(21-150)/150.0);
glEnd();
glBegin(GL_POLYGON);
glVertex2f((220-150)/150.0,-(30-150)/150.0);
glVertex2f((223-150)/150.0,-(74-150)/150.0);
glVertex2f((288-150)/150.0,-(87-150)/150.0);
glVertex2f((283-150)/150.0,-(14-150)/150.0);
glEnd();
glBegin(GL_POLYGON);
glVertex2f((10-150)/150.0,-(274-150)/150.0);
glVertex2f((81-150)/150.0,-(281-150)/150.0);
glVertex2f((83-150)/150.0,-(215-150)/150.0);
glEnd();
glutSwapBuffers();
}
int main(int argc,char**argv)
{
glutInit(&argc , argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("03161042");
glutDisplayFunc(display);
glutMouseFunc(mouse);//Mouse函式
glutMainLoop();
}
4.產生多個圓 改變坐標
#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
void display()
{
glClearColor(150/255.0,170/255.0,55/255.0,1);//背景顏色
glClear(GL_COLOR_BUFFER_BIT);//背景漆上顏色
glColor3ub(185,193,81);//前景顏色
glPushMatrix();//備份位置
glBegin(GL_POLYGON);
for(float angle=0;angle<3.14159265357989*2;angle+=0.1)
{
glVertex2f(0.2*cos(angle),0.2*sin(angle));
}
glEnd();
glPopMatrix();//取出位置使用
glPushMatrix();//備份位置
glTranslated(0,0.5,0);//移動坐標
glBegin(GL_POLYGON);
for(float angle=0;angle<3.14159265357989*2;angle+=0.1)
{
glVertex2f(0.2*cos(angle),0.2*sin(angle));
}
glEnd();
glPopMatrix();//取出位置使用
glPushMatrix();//備份位置
glTranslated(-0.5,0,0);
glBegin(GL_POLYGON);
for(float angle=0;angle<3.14159265357989*2;angle+=0.1)
{
glVertex2f(0.2*cos(angle),0.2*sin(angle));
}
glEnd();
glPopMatrix();//取出位置使用
glutSwapBuffers();
}
int main(int argc,char**argv)
{
glutInit(&argc , argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("03161042");
glutDisplayFunc(display);
glutMainLoop();
}








沒有留言:
張貼留言