实验二 交互与动画.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验二 交互与动画

实验二 交互与动画 姓名 叶传军 学号 得分 【实验目的】 1.掌握基本交互式程序的编程方法。 2.掌握基本动画程序的编程方法。 一.实验题目 1.阅读squareMouse.c, 回答下面的问题: (1)glFlush()函数和glClear(GL_COLOR_BUFFER_BIT)函数的作用分别是什么?(可将这两个函数注释掉,和注释前的结果对比) (2)修改squareMouse.c,分别实现如下功能: 通过利用移动回调函数可以在不释放鼠标按钮的情况下,连续画一系列正方形; 应用被动移动回调函数,可以不用按鼠标按钮就可以连续画正方形; 按下Alt+c或Alt+C时,终止程序。 2. 编写一个程序,实现如下的功能:连续两次单击鼠标左键,以两次单击的位置作为矩形的对角线来绘制一个矩形,且该矩形各边与屏幕对齐。鼠标右键用于程序的退出。 (1)将绘制矩形的函数放在鼠标回调函数中完成。glutPostRedisplay())。 3.将正方形旋转的程序squareRotate.c改成正六边形旋转的程序。 4.创建一个绘图程序,使得可用鼠标来创建一些简单的形状,如线段,三角形,矩形,并可通过菜单来实现下列功能。要求: (1)可改变形状的颜色。 (2)可改变形状的大小。 (3)可移动形状。 (4)可旋转形状。 (5)你能想到的任何功能。 二.设计思想 本次实验主要通过改变几个主要回调函数来实现一些图形的绘制,主要使用的回调函数有 glutMouseFunc();鼠标回调函数 glutMotionFunc();鼠标移动回调函数 glutPassiveMotionFunc();被动移动回调函数 glutKeyboardFunc();键盘回调函数 void display();显示回调函数 其中应注意每个函数参数的含义以及glutPostRedisplay()函数与display()函数的使用。 三.程序清单 1.阅读squareMouse.c, 回答下面的问题: (1)glFlush()函数和glClear(GL_COLOR_BUFFER_BIT)函数的作用分别是什么?(可将这两个函数注释掉,和注释前的结果对比) glFlush()函数的作用是清空OPENGL命令缓冲区,执行OPENGL程序。 GlClear(GL_COLOR_BUFFER_BIT)函数的作用是用当前背景色填充窗口。 (2)修改squareMouse.c,分别实现如下功能: a.通过利用移动回调函数可以在不释放鼠标按钮的情况下,连续画一系列正方形; #includestdafx.h #include stdlib.h #include GL/glut.h #includemath.h /* globals */ GLsizei wh = 300, ww = 300; /* initial window size */ GLfloat size = 5.0; /* half side length of square */ void drawSquare(int x, int y) { y=wh-y; glColor3ub( (char) rand()%256, (char) rand()%256, (char) rand()%256); //glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POLYGON); glVertex2f(x+size, y+size); glVertex2f(x-size, y+size); glVertex2f(x-size, y-size); glVertex2f(x+size, y-size); glEnd(); glFlush(); } /* rehaping routine called whenever window is resized or moved */ void myReshape(GLsizei w, GLsizei h) { /* adjust clipping box */ glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0, (GLdouble)w, 0.0, (GLdouble)h, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); /* adjust viewport and clear */ glViewport(0,0,w,h); glClearColor

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档