计算机图形学划线实验报告.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《计算机图形学划线实验报告.doc》由会员分享,可在线阅读,更多相关《计算机图形学划线实验报告.doc(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.-计算机图形学实验报告实验一 直线、圆(弧)生成算法一、实验目的及要求 1. 了解光栅图形显示器的工作原理和特点; 2. 学习C/VC环境下的基本绘图方法; 3. 实践与巩固直线的基本生成算法。 4. 掌握直线扫描转换算法的原理及实现; 5. 学习圆(弧)的基本生成算法; 6. 实践圆(弧)的基本生成算法; 7. 掌握圆弧扫描转换算法的原理及实现;二、理论基础 1、有关直线生成算法有 DDA(数值微分)、中点画线线算法、Bresenham生成算法数值微分法先算出直线的斜率,然后从起点开始,确定最佳逼近于直线的y坐标。假设起点的坐标为整数。让x递增1,y相应递增k。中点划线算法中若直线在x方向
2、增加一个单位,y的增量只能在0、1之间。假设当前像素点已经确定,下一像素点就只可能有两种情况,将这两点的中点带入直线方程中,通过中点在直线的上、下方来判断下一点的坐标。Bresenham算法是通过各行、各列像素中心构造一组虚拟网络格线,按直线从起点到中点的顺序计算直线与各垂直网格线的交点,然后确定该列像素中与此交点最近的像素。2、有关画圆的算法 圆的扫描转换(中点画圆法)、Bresenham画圆算法圆的扫描转换算法同中点画线类似,将圆分为8份,先讨论圆的第一象限上半部分,从(0,R)点顺时针确定最佳逼近于该圆弧的像素序列。之后通过对称画出全部圆。Bresenham画圆算法考虑圆在第一象限上的点
3、,每确定一像素,则下一像素有三种可能,通过判断右下方的像素与圆的位置关系再分为三种情况,之后通过这三个点与圆的距离远近确定最佳逼近像素。三、算法设计与分析1、数值微分法 int x0=0,y0=0,x1=800,y1=400; /数值微分法,|k|=1 float dx,dy,k,x,y; dx=x1-x0; dy=y1-y0; k=dy/dx; y=y0; for(x=x0;xSetPixel(x,int(y+0.5),color); y=y+k; 该程序中每一步的x、y值是用前一步的值加上一个增量来获得的。在程序中y与k必须用浮点数表示,每一步都必须对y进行取整。此程序只能用于计算|k|=
4、1的情形,当直线的斜率的绝对值超过1是,必须把x、y的地位进行交换,y每增加一,x相应增加1/k.2中点画线法COLORREF color=RGB(100,25,108); int x0=0,y0=0,x1=800,y1=400; /中点画线法,0kSetPixel(x, y, color); while (xx1) if (dSetPixel (x, y, color); 该程序只能用于计算斜率在0、1之间的直线,从中点划线法思想计算得出的初值d0=a+0.5b为浮点型数据,由于我们只需要d的符号,而且d的增量都是整数,只是其初始值包含小数,因此,在程序中我们可以用2d代替d,来摆脱小数,
5、在画别的的情况斜率的直线时,将此程序中的a,b,x,y做相应的改变,具体在源程序中呈现。 当画任意起始点的直线时,只需将x0、x1、y0、y1的次序做相应的调整使之满足程序所给条件。3、Bresenham生成算法int x0=0,y0=0,x1=800,y1=200; /0k1int x,y,dx,dy,i;float k,e;dx=x1-x0;dy=y1-y0;k=(float)dy/(float)dx;e=-0.5;x=x0;y=y0;for(i=0;iSetPixel(x,y,255);x=x+1;e=e+k;if(e=0)y=y+1;e=e-1; 该程序原本要通过直线与网格交点与0.5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 划线 实验 试验 报告 讲演 呈文
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内