计算机图形学实验报告实验1

计算机图形学实验报告实验1

ID:33058045

大小:131.51 KB

页数:9页

时间:2019-02-19

计算机图形学实验报告实验1_第1页
计算机图形学实验报告实验1_第2页
计算机图形学实验报告实验1_第3页
计算机图形学实验报告实验1_第4页
计算机图形学实验报告实验1_第5页
资源描述:

《计算机图形学实验报告实验1》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、贵州大学实验报告学院:计算机科学与信息专业:计科班级:101姓名吕杨学号1008060040实验时间2013-3-31指导教师吴云同组成员成绩实验项目名称实验内容实验原理及算法设计直线生成算法通过实验,掌握计算机绘制图形的方法和操作步骤,并且掌握生成直线的三种算法:1、DDA算法2、中点直线算法3、Bresenham算法的基木思想,并且比较他们的特点。1、分析算法原理,编制应用程序,分别使用Brcscnham算法,中点直线算法以及DDA算法绘制给定端点坐标的直线,并且截图;2、比较三种算法的特点。・Bresenham算法1.Bresenham算法

2、原理Bresenham算法是计算机图形学领域使用最广泛的直线扫描转换算法。由误差项符号决定下一个像素取右边点还是右上方点。设直线从起点(x1,y1)到终点(x2,y2)o直线可表示为方程y=mx+b,其中b=y1-m*x1,m=(y2-y1)/(x2-x1)=dy/dx;此处的讨论直线方向限于1a象限(图1-3),当直线光栅化时,x每次都增加1个单元,设x像素为(xi,yi)0下一个像素的列坐标为xi+1,行坐标为yi,或者递增1为yi+1,由y与yi及yi+1的距离d1及d2的大小而定。计算公式为y=m(xi+1)+b(1.1)d1=y-yi(

3、1.2)d2=yi+1-y(1.3)如果d1-d2>0,贝ijyi+1=yi+1,否则yi+1=yio式(1.1)、(1.2).(1.3)代入d1-d2,再用dx乘等式两边,并以Pi=(d1-d2)dx代入上述等式,得Pi=2xidy-2yidx+2dy+(2b-1)dx(1.4)d1-d2是用以判断符号的误差。由于在1a象限,dx总大于0,所以Pi仍旧可以用作判断符号的误差。Pi+1为Pi+1=Pi+2dy-2(yi+1-yi)dx(1.5)求误差的初值P1,可将x1、y1和b代入式(24)中的xi、yi而得到P1=2dy-dx1.直线Bres

4、enham算法设计:(1).输入直线的起点坐标P0(x0.y0)和终点坐标Pl(xl.y2)。(2).定义直线当前点坐标x和y,定义中点偏差判别式d,定义直线斜率k,定义像素点颜色rgb。(3).x=x0,y=yO,计算d=0.5~k,k=(yl-yO)/(xl~x0),rgb=RGB(O,0,255).(4)・绘制点(x,y),判断点d的符号。若d<0,则(x,y)更新为(x+1,y+1),d更新为cl+l-k;否则(x,y)更新为(x+1,y),cl更新为d-k。(5).如果当前点x小于xl,重复步骤(4),否则结束。二.中点直线算法如图所示

5、,在画直线段的过程中,当前像素点为P,下一个像素点有两种选择,点p1或p2oM为p1与p2中点,Q为理想直线与x=xp+1垂线的交点。当M在Q的下方,贝炉2应为下一个像素点;M在Q的上方,应取P1为下一点。中点算法实现令直线段L(pO(xO,yO),p1(x1,y1)),其方程式F(x,y)=ax+by+c=Oo其中,a=yO-y1,b=x1-xO,c=xOy1-x1yO;点与L的关系:在直线上:F(x,y)=O;在直线上方:F(x,y)>0;在直线下方:F(x,y)<0;把M代入F(x,y)判断F的符号,可知Q点在中点M的上方还是下方。为此构造

6、判别式:d=F(M)=F(xp+1,yp+0.5)=a(xp+1)+b(yp+0.5)+c当d<0,L(Q点)在M上方,取P2为下一个像素;当d>0,L(Q点)在M下方,取P1为下一个像素;当d=0,选P1或P2均可,取P1为下一个像素;其屮d是xp,yp的线性函数。三.DDA算法如图所示,已知过端点p0(x0,y0l),pl(xl,yl)的直线段pOpl;直线斜率为Line:PO(O,0)—Pl(5,2)k=(yl-yO)/(xl-xO),从x的左端点xO开始,向x右端点步进画线,步长=1(个像素),计算相应的y坐标y=kx-^B;取像素点(x

7、,roundsy))作为当前点的坐标。计算Xi+i=Xi+Ax=Xi+l,yi+1=k•Xi+i+b当x每递增1,y递增k(即直线斜率)。直线DDA算法实现:1、已知直线的两端点坐标:(x1,y1),(x2,y2)2、已知画线的颜色:color3、计算两个方向的变化量:dx=x2—x1dy=y2—y14、求出两个方向最大变化量的绝对值:steps=max(

8、dx

9、,

10、dy

11、)5、计算两个方向的增量(考虑了生成方向):xin=dx/stepsyin=dy/steps6、设置初始象素坐标:x=x1,y=y17、用循环实现直线的绘制:for(i=1;i

12、v=steps;i++){putpixel(x,y,color);/*■在(x,y)处,以color色画点*7x=x+xin;y=y+y

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

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

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