【精品】实验二二维基本图元的生成

【精品】实验二二维基本图元的生成

ID:43854836

大小:67.50 KB

页数:8页

时间:2019-10-16

【精品】实验二二维基本图元的生成_第1页
【精品】实验二二维基本图元的生成_第2页
【精品】实验二二维基本图元的生成_第3页
【精品】实验二二维基本图元的生成_第4页
【精品】实验二二维基本图元的生成_第5页
资源描述:

《【精品】实验二二维基本图元的生成》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验二二维基本图元的生成实验目的:通过实验掌握下列知识:1.进一步掌握OpenGL的绘制原理;2.直线生成算法的理解与实现;3.圆生成算法的理解与实现;4.椭圆生成算法的理解与实现;内容及步骤:一、实现DDA直线生成算法读懂课本第72页所给的如下代码,理解执行的原理:#include#includeinlineintround(constfloata){returnint(a+0-5);}voidlineDDA(intxO,intyO,intxEnd,intyEnd){intdx=xEnd-xO,dy=yEn

2、d-yO,steps,k;floatxlncrement,ylncrement,x=xO,y=yO;if(fabs(dx)>fabs(dy))steps=fabs(dx);elsesteps=fabs(dy);xlncrement=float(dx)/float(steps);ylncrement=float(dy)/float(steps);setPixel(round(x),round(y));for(k=0;k

3、));}}注意:(1)代码没有主函数及其它OpenGL的初始化函数,请用前面实验一中的代码进行添加,该画线函数在回调函数myDraw()中调用执行;(2)代码中两次调用setPixel(int,int)函数,该函数不是C或C++的系统函数,需要我们自己去定义。实际上它是一个画点的函数,所以用OpenGL的画点的方法进行改写,参考如下:voidsetPixel(GLintx,GLinty){glBegin(GL_POINTS);glVertex2i(x,y);glEnd();}(3)函数前的修饰符inline表示该函数是一个内联函数。内联函数在编

4、译时直接用函数体代码替代该函数被调用的位置,加快程序执行的速度,与宏定义非常类似。二、实现Bresenham直线生成算法读懂课本第76页所给的如下代码,理解执行的原理:#include#include/*Bresenhamline-drawingprocedureforImI<10*/voidlineBres(intxO,intyO,intxEnd,intyEnd){intdx=fabs(xEnd-xO),dy=fabs(yEnd-yO);intp=2*dy-dx;inttwoDy=2*dy,twoDyMin

5、usDx二2*(dy-dx);intx,y;/*Determinewhichendpointtouseasstartposition.*/if(xO>xEnd){x=xEnd;y=yEnd;xEnd=xO;}else{x=xO;y=yO;}setPixel(x,y);while(x

6、用执行;(2)代码中两次调用setPixel(int,int)函数,该函数不是C或C++的系统函数,需要我们自己去定义。三、实现中点圆算法读懂课本第85页所给的如下代码,理解执行的原理:#includeclassscrPt{public:GLintx,y;};voidsetPixel(GLintx,GLinty){glBegin(GL_POINTS);glVertex2i(x,y);glEnd();}voidcircleMidpoint(scrPtcircCtr,GLintradius){scrPtcircPt;GLint

7、p=1-radius;//Initialvalueofmidpointparamete匚circPt.x=0;circPt.y=radius;//Setcoordinatesfortoppointofcircle.voidcirclePlotPoints(scrPt,scrPt);/*Plottheinitialpointineachcirclequadrant.*/circlePlotPoints(circCtr,circPt);/*Calculatenextpointsandplotineachoctant.*/while(circPt.x

8、

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。