- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在OpenGL中实现橡皮筋技术画一个矩形,并学会简单的鼠标键盘交互式设备的使用以及交互式绘图技术的实现
计算机图形学实验报告
实验目的和要求
在OpenGL中实现橡皮筋技术画一个矩形,并学会简单的鼠标键盘交互式设备的使用以及交互式绘图技术的实现。
实验内容
橡皮筋技术的关键在于控制图形随着用户的操作而不断发生变化,此时要擦除原有的图形而形成新的图形。因此在本实验中要学习这种方法,并且画一个矩形。
实验步骤
相关算法及原理描述
鼠标响应函数: void MousePlot
在OpenGL程序中,使用鼠标的方法是注册一个鼠标响应函数,对鼠标在窗口范围内的按键按下或松开事件进行处理,其中MousePlot函数是鼠标响应函数,它包含四个参数:
void MousePlot (Glint Button,Glint xMouse,GLint action ,Glint yMouse)
此外GLUT还提供了两用于处理鼠标移动的注册函数
GluMotionfunc(MouseMove)
GluPassiveMotionFunc(PassiveMouseMove)
程序调试、测试与运行结果分析
运行结果如下图,程序调试成功,并且能正常显示,不足之处:调试了半天,右键显示及调节属性的功能仍旧没法实现,最后不得不把那个函数删掉,感觉很是遗憾。
实验总结
通过本次试验,进一步认识和理解了橡皮筋算法的基本算法思想,同时也对双缓存技术有了一些了解,由于自己不太擅长编程,所以有些功能还不能完全实现,但我会尽自己最大努力来克服自己的编程不足之处,多加练习。
5、附录
带注释的源程序
#includewindows.h
#includeglut.h
#includeiostream.h
int x0,y0;
int x1,y1;
int x2,y2;
int x3,y3;
int width;
int height=500;
int first=500;
int iPointNum = 0; //已确定点的数目
int winWidth = 400, winHeight = 300; //窗口的宽度和高度
bool have_square=false;
int draw=0;
bool drawable=true;
void Key(unsigned char key, int x, int y)
{
switch(key){
case p:
if(iPointNum == 0 || iPointNum == 2)
{
iPointNum = 1;
x1 = x; y1 = winHeight - y;
}
else {
iPointNum = 2;
x2 = x; y2 = winHeight - y;
glutPostRedisplay();
}
break;
default: break;
}
}
void display(void);
void mouse(int button,int state, int x,int y)
{
glEnable(GL_LOGIC_OP);
if(have_square == false)
{
if(button == GLUT_LEFT_BUTTON state == GLUT_DOWNdraw==0)
{
x1=x2=x3=x0 = x;
y1=y2=y3=y0 = height-y;
glColor3f(0.0,1.0,0.0);
glLogicOp(GL_XOR);
first = 0;
}
if(button == GLUT_LEFT_BUTTON state == GLUT_UPdraw==0)
{
glBegin(GL_LINE_LOOP);
glVertex2f(x0,y0);
glVertex2f(x1,y1);
glVertex2f(x2,y2);
glVertex2f(x3,y3);
glEnd();
glFlush();
x2 = x;
y2 = height-y;
x1 = x0;
y1 = y2;
x3 = x;
y3 = y0;
glFlush();
glColor3f(0.0,0.0,1.0);
glLogicOp(GL_COPY);
glBegin(GL_LINE_LOOP);
glVertex2f(x0,y0);
glVertex2f(x1,y1);
glVertex2f(x2,y2);
glVertex2f(x3,y3);
gl
您可能关注的文档
- 国际贸易论文-促进我国加工贸易健康发展的思考.doc
- 国际贸易论文-我国中小企业国际竞争力不足分析及建议.doc
- 国际贸易论文-对古代丝路贸易与北宋白银货币化探析.doc
- 国际贸易论文-加工贸易产业梯度转移与区域和谐发展基于产品内分工的视角.doc
- 国际贸易论文-技术性贸易壁垒及其对我国汽车出口的影响.doc
- 国际贸易论文-浅析技术性贸易壁垒的特点.doc
- 国际贸易论文-浅谈国际货物买卖中的所有权保留问题.doc
- 国际贸易论文-美国“337调查”壁垒对中国企业出口的影响及对策.doc
- 国际贸易课程设计论文之电子商务模式下的企业贸易成本分析.doc
- 国际运输与保险教学大纲 全部.doc
- 深度解析(2026)《JBT 10047-2021电子式时间继电器》.pptx
- 深度解析(2026)《JBT 7533-1994钢质辊锻件工艺编制原则》:工艺基石、标准精义与未来锻造新范式.pptx
- 深度解析(2026)《JBT 11214-2012剪板机用数控系统》.pptx
- 深度解析(2026)GBT 20058-2017滚动轴承 单列角接触球轴承 外圈非推力端倒角尺寸 .pptx
- 深度解析(2026)GBT 8894-2014《铜及铜合金波导管》.pptx
- 深度解析(2026)GBT 11224-1989《水中钍的分析方法》.pptx
- 深度解析(2026)GBT 11372-1989《防锈术语》:理论基石、演进脉络与未来应用前瞻.pptx
- 深度解析(2026)GBT 13299-2022钢的游离渗碳体、珠光体和魏氏组织的评定方法.pptx
- 深度解析(2026)GBT 17626.29-2006电磁兼容 试验和测量技术 直流电源输入端口电压暂降、短时中断和电压变化的抗扰度试验.pptx
- 深度解析(2026)GBT 20958.1-2007数控床身铣床检验条件 精度检验 第1部分 卧式铣床.pptx
原创力文档


文档评论(0)