Homework-1
freeglut解壓縮
new→project
main.c→齒輪播放建
沿用上一個程式,並刪除多餘的程式碼,保留剩下所需的10行程式碼
#include <GL/glut.h>
void display(void)
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("60CCE NO.1");
glutDisplayFunc(display);
///glutMouseFunc(mouse);
///glutMotionFund(motion);
glutMainLoop();
}
新增滑鼠事件
#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
void mouse(int button,int state,int x,int y);
{
printf("%d %d %d %d\n",button,state,x,y);///第二個數字,0為按下、1為放開
}
void display(void)
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("60CCE NO.1");
glutDisplayFunc(display);
glutMouseFunc(mouse);///Test the mouse func
///glutMotionFund(motion);
glutMainLoop();
}
利用滑鼠改變顏色
#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
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);///R,G,B
glutPostRedisplay();
}
void display(void)
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("60CCE NO.1");
glutDisplayFunc(display);
glutMouseFunc(mouse);
///glutMotionFund(motion);
glutMainLoop();
}
拖曳滑鼠即可改變顏色
#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
void mouse(int button,int state,int x,int y);
{
printf("%d %d %d %d\n",button,state,x,y);
}
void motion(int x,int y)
{
printf("%d %d\n",x,y);
glColor3f(1,x/300.0,y/300.0);
glutPostRedisplay();
}
void display(void)
{
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(300,300);///改變視窗大小
glutCreateWindow("60CCE NO.1");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMotionFund(motion);
glutMainLoop();
}
利用程式碼產生新的程式碼畫出圖形
#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
void mouse(int button,int state,int x,int y);
{
if(state==GLUT_DOWN)printf("glVertex2f(%.2f,%.2f);\n",(x-150)/150.0,-(y-150)/150.0);
}
void motion(int x,int y)
{
glColor3f(1,x/300.0,y/300.0);
glutPostRedisplay();
}
void display(void)
{
glVertex2f(0.03,-0.47);
glVertex2f(-0.05,-0.45);
glVertex2f(-0.17,-0.37);
glVertex2f(-0.17,-0.37);
glVertex2f(-0.23,-0.32);
glVertex2f(-0.41,-0.19);
glVertex2f(-0.47,-0.14);
glVertex2f(-0.51,-0.10);
glVertex2f(-0.54,-0.03);
glVertex2f(-0.59,0.16);
glVertex2f(-0.57,0.28);
glVertex2f(-0.54,0.33);
glVertex2f(-0.47,0.38);
glVertex2f(-0.39,0.39);
glVertex2f(-0.33,0.40);
glVertex2f(-0.19,0.39);
glVertex2f(-0.15,0.35);
glVertex2f(-0.13,0.30);
glVertex2f(-0.08,0.25);
glVertex2f(-0.08,0.23);
glVertex2f(0.09,0.31);
glVertex2f(0.15,0.41);
glVertex2f(0.24,0.42);
glVertex2f(0.25,0.42);
glVertex2f(0.32,0.41);
glVertex2f(0.49,0.41);
glVertex2f(0.51,0.33);
glVertex2f(0.53,0.22);
glVertex2f(0.53,0.15);
glVertex2f(0.51,-0.02);
glVertex2f(0.43,-0.17);
glVertex2f(0.40,-0.22);
glVertex2f(0.33,-0.27);
glVertex2f(0.25,-0.32);
glVertex2f(0.21,-0.36);
glVertex2f(0.11,-0.44);
glVertex2f(0.09,-0.45);
glVertex2f(0.05,-0.50);
glVertex2f(0.04,-0.52);
glEnd();
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(300,300);
glutCreateWindow("60CCE NO.1");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMotionFund(motion);
glutMainLoop();
}
利用程式碼畫圓
#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
void mouse(int button,int state,int x,int y)
{
if(state==GLUT_DOWN)printf("glVertex2f(%.2f,%.2f);\n",(x-150)/150.0,-(y-150)/150.0);
}
void motion(int x,int y)
{
glColor3f(1,x/300.0,y/300.0);
glutPostRedisplay();
}
void display(void)
{
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);
glutInitWindowSize(300,300);
glutCreateWindow("60CCE NO.1");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMotionFund(motion);
glutMainLoop();
}
改變程式碼以線畫圓
#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
void mouse(int button,int state,int x,int y)
{
if(state==GLUT_DOWN)printf("glVertex2f(%.2f,%.2f);\n",(x-150)/150.0,-(y-150)/150.0);
}
void motion(int x,int y)
{
glColor3f(1,x/300.0,y/300.0);
glutPostRedisplay();
}
void display(void)
{
glBegin(GL_LINE_LOOP);
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);
glutInitWindowSize(300,300);
glutCreateWindow("60CCE NO.1");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMotionFund(motion);
glutMainLoop();
}
















沒有留言:
張貼留言