
















Mouse程式碼
#include <GL/glut.h>
#include <stdio.h>
void display()
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
void mouse(int button,int state,int x,int y)
{
printf("%d %d %d %d\n",button,state,x,y);
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
移動Translatef(x,y,z)程式碼
#include <GL/glut.h>
#include <stdio.h>
float teapotX=0, teapotY=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);清除
glPushMatrix();備份
glTranslatef(teapotX,teapotY,0);其實並不是移動物體
glutSolidTeapot(0.3);是在一個新的地方再畫一個新的
glPopMatrix();
glutSwapBuffers();
}
void mouse(int button,int state,int x,int y)
{
printf("%f %f\n",(x-150)/150.0,(y-150)/150.);
teapotX=(x-150)/150.0;
teapotY=-(y-150)/150.0;因為y軸有正負關係 往上是+往下是-
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}

用滑鼠寫程式
#include <GL/glut.h>
#include <stdio.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON);
glVertex2d((156-150)/150.0,-(35-150)/150.0);
glVertex2d((138-150)/150.0,-(59-150)/150.0);
glVertex2d((124-150)/150.0,-(87-150)/150.0);
glEnd();
glutSwapBuffers();
}
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);
}
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
week3回家作業 利用頂點畫圖
畫圓形
回家作業(小海豹)
#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
void display()
{
glClearColor(0,128,125,1);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON);
*先把身體做出來
glVertex2f((45-150)/150.0,-(288-150)/150.0);
glVertex2f((282-150)/150.0,-(288-150)/150.0);
glVertex2f((287-150)/150.0,-(277-150)/150.0);
glVertex2f((285-150)/150.0,-(263-150)/150.0);
glVertex2f((278-150)/150.0,-(252-150)/150.0);
glVertex2f((275-150)/150.0,-(239-150)/150.0);
glVertex2f((273-150)/150.0,-(226-150)/150.0);
glVertex2f((267-150)/150.0,-(210-150)/150.0);
glVertex2f((259-150)/150.0,-(190-150)/150.0);
glVertex2f((250-150)/150.0,-(176-150)/150.0);
glVertex2f((243-150)/150.0,-(162-150)/150.0);
glVertex2f((232-150)/150.0,-(146-150)/150.0);
glVertex2f((219-150)/150.0,-(129-150)/150.0);
glVertex2f((198-150)/150.0,-(108-150)/150.0);
glVertex2f((176-150)/150.0,-(95-150)/150.0);
glVertex2f((153-150)/150.0,-(89-150)/150.0);
glVertex2f((134-150)/150.0,-(84-150)/150.0);
glVertex2f((105-150)/150.0,-(82-150)/150.0);
glVertex2f((80-150)/150.0,-(88-150)/150.0);
glVertex2f((58-150)/150.0,-(101-150)/150.0);
glVertex2f((45-150)/150.0,-(120-150)/150.0);
glVertex2f((29-150)/150.0,-(142-150)/150.0);
glVertex2f((18-150)/150.0,-(175-150)/150.0);
glVertex2f((15-150)/150.0,-(193-150)/150.0);
glVertex2f((14-150)/150.0,-(207-150)/150.0);
glVertex2f((13-150)/150.0,-(222-150)/150.0);
glVertex2f((17-150)/150.0,-(236-150)/150.0);
glVertex2f((20-150)/150.0,-(249-150)/150.0);
glVertex2f((25-150)/150.0,-(261-150)/150.0);
glVertex2f((35-150)/150.0,-(269-150)/150.0);
glVertex2f((37-150)/150.0,-(278-150)/150.0);
glEnd();
*然後開始做表情 小海豹沒有甚麼表情
glBegin(GL_POLYGON);
glColor3f(62/255.0,58/255.0,57/255.0);
for(float angle=0;angle<=2*3.1415;angle+=0.01)
{
glVertex2f( 0.02*cos(angle)-0.3, 0.02*sin(angle)+0.1 );
}
glEnd();
glBegin(GL_POLYGON);
glColor3f(62/255.0,58/255.0,57/255.0);
for(float angle=0;angle<=2*3.1415;angle+=0.01)
{
glVertex2f( 0.02*cos(angle)-0.18, 0.02*sin(angle)+0.1 );
}
glEnd();
glBegin(GL_POLYGON);
glColor3f(229/255.0,58/255.0,108/255.0);
for(float angle=0;angle<=2*3.1415;angle+=0.01)
{
glVertex2f( 0.08*cos(angle)-0.5, 0.08*sin(angle)-0.25 );
}
glEnd();
glBegin(GL_POLYGON);
glColor3f(229/255.0,58/255.0,108/255.0);
for(float angle=0;angle<=2*3.1415;angle+=0.01)
{
glVertex2f( 0.08*cos(angle)+0.05, 0.08*sin(angle)-0.25 );
}
glEnd();
glBegin(GL_POLYGON);
glColor3f(62/255.0,58/255.0,57/255.0);
for(float angle=0;angle<=2*3.1415;angle+=0.01)
{
glVertex2f( 0.053*cos(angle)-0.1, 0.067*sin(angle)-0.05);
}
glEnd();
glBegin(GL_POLYGON);
glColor3f(62/255.0,58/255.0,57/255.0);
for(float angle=0;angle<=2*3.1415;angle+=0.01)
{
glVertex2f( 0.053*cos(angle)-0.35, 0.067*sin(angle)-0.05);
}
glEnd();
*嘴巴
glBegin(GL_POLYGON);
glVertex2f((120-150)/150.0,-(161-150)/150.0);
glVertex2f((124-150)/150.0,-(162-150)/150.0);
glVertex2f((123-150)/150.0,-(166-150)/150.0);
glVertex2f((130-150)/150.0,-(166-150)/150.0);
glVertex2f((132-150)/150.0,-(171-150)/150.0);
glVertex2f((131-150)/150.0,-(180-150)/150.0);
glVertex2f((125-150)/150.0,-(185-150)/150.0);
glVertex2f((119-150)/150.0,-(178-150)/150.0);
glVertex2f((112-150)/150.0,-(183-150)/150.0);
glVertex2f((108-150)/150.0,-(181-150)/150.0);
glVertex2f((106-150)/150.0,-(174-150)/150.0);
glVertex2f((108-150)/150.0,-(166-150)/150.0);
glVertex2f((114-150)/150.0,-(165-150)/150.0);
glVertex2f((115-150)/150.0,-(161-150)/150.0);
glEnd();
glutSwapBuffers();
}
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);
}
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
這次做得沒有想像中的成功
下次一定會做到最完美的小海豹
















沒有留言:
張貼留言