- 先用Zuvio複習上周課程(點、線、面、色彩)
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();
}
#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();
}

- 寫一個利用滑鼠移動茶壺的程式碼
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)
{
teapotX = (x-150)/150.0;
teapotY=-(y-150)/150.0;
}
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);
glVertex2f( (168-150)/150.0, -(91-150)/150.0 );
glVertex2f( (77-150)/150.0, -(154-150)/150.0 );
glVertex2f( (68-150)/150.0, -(71-150)/150.0 );
glVertex2f( (95-150)/150.0, -(175-150)/150.0 );
glVertex2f( (71-150)/150.0, -(144-150)/150.0 );
glVertex2f( (82-150)/150.0, -(160-150)/150.0 );
glVertex2f( (116-150)/150.0, -(199-150)/150.0 );
glVertex2f( (165-150)/150.0, -(231-150)/150.0 );
glVertex2f( (237-150)/150.0, -(180-150)/150.0 );
glVertex2f( (270-150)/150.0, -(92-150)/150.0 );
glVertex2f( (235-150)/150.0, -(46-150)/150.0 );
glEnd();
glutSwapBuffers();
}
void mouse(int button, int state, int x, int 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>
#include <math.h>
void display()
{
glClearColor(152/255.0, 256/255.0, 84/255.0, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(244/255.0,152/255.0,94/255.0);
glBegin(GL_POLYGON);
for(float angle=0; angle<=3.1415926 * 2 ; angle +=0.01)
{
glVertex2f(0.3*cos(angle), 0.8*sin(angle));
}
glEnd();
glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
#include <stdio.h>
#include <math.h>
void display()
{
glClearColor(152/255.0, 256/255.0, 84/255.0, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(244/255.0,152/255.0,94/255.0);
glBegin(GL_POLYGON);
for(float angle=0; angle<=3.1415926 * 2 ; angle +=0.01)
{
glVertex2f(0.3*cos(angle), 0.8*sin(angle));
}
glEnd();
glutSwapBuffers();
}
void mouse(int button, int state, int x, int y)
{
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Week03");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}



沒有留言:
張貼留言