



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机图形学实验报告实验1:Bresenham算法 实验题目: Bresenham直线扫描算法的实现 实验内容及要求:实现绘制各种情况直线的Bresenham算法,并将实现的算法应用于任意多边形的绘制,要求多边形的顶点由键盘输入或鼠标拾取,绘制的多边形顶点要准确,图形应该封闭。要求掌握Bresenham算法的基本原理和算法设计,画出算法实现的程序流程图,使用C或者VC+实现算法,并演示。 实验原理:1、Bresenham基本算法:过各行各列象素中心构造一组虚拟网格线。按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后根据误差项的符号确定该列象素中与此交点最近的象素。设直线方程为:其中k=dy/dx。 因为直线的起始点在象素中心,所以误差项d的初值d00。X下标每增加1,d的值相应递增直线的斜率值k,即ddk。一旦d1,就把它减去1,这样保证d在0、1之间。当d0.5时,最接近于当前象素的右上方象素( )当d0.5时,更接近于右方象素( )。为方便计算,令ed-0.5,e的初值为-0.5,增量为k。当e0时,取当前象素(xi,yi)的右上方象素( );而当ex2)int tempx,tempy;tempx=x1;x1=x2;x2=tempx;tempy=y1;y1=y2;y2=tempy;/根据斜率的情况不同而绘制if(y1=y2)/斜率为0的情况for(x=x1;xSetPixel(x,y1,2);else if(x1=x2)/直线为垂直的情况if(y1y2) /使直线按从下往上画int tempy=y1;y1=y2;y2=tempy;for(y=y1;ySetPixel(x1,y,2);elsedy=y2-y1;dx=x2-x1;if(abs(dy)=abs(dx)/斜率为1或-1时x=x1;y=y1;if(dy=y2;y-)x+;pDC-SetPixel(x,y,2);/斜率为1else/斜率为-1for(;ySetPixel(x,y,2);/斜率为-1else if(abs(dy)0&dx0)/斜率为正时right=-2*dy;rightleft=2*dx-2*dy;d=dx-2*dy;x=x1;y=y1;while(xSetPixel(x,y,2);x+;if(d0)y+;d=d+rightleft;elsed=d+right;/斜率为正时else /斜率为负时right=2*dy;rightleft=2*dy-2*dx;d=2*dy-dx;x=x1;y=y1;while(xSetPixel(x,y,2);x+;if(d0&dx0)/斜率为正时right=2*dx;rightleft=2*dx-2*dy;d=2*dx-dy;x=x1;y=y1;while(ySetPixel(x,y,2);y+;if(d=0)x+;d=d+rightleft;elsed=d+right;/斜率为正时 else/斜率为负时right=-2*dx;rightleft=-2*dx-2*dy;d=-2*dx-dy;x=x1;y=y1;while(y=y2)pDC-SetPixel(x,y,2);y-;if(d0)x+;d=d+rightleft;elsed=d+right;/斜率为负时/斜率的绝对值大于1时/斜率的所有情况void CBresenhamView:OnDraw(CDC* pDC)CBresenhamDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);Bresenhamline(10,10,500,50,pDC);/ TODO: add draw code for native data here2、实验步骤:1) 新建工程文件2) 打开下resenhamView.cpp3) 在/ CBresenhamView drawing代码后 添加以上代码。4) 运行成功更改绘制坐标 Bresenhamline(10,10,500,50,pDC) 可以改变直线斜率,还能通过直线的连接绘制多边形。如:/绘制多边形Bresenhamline(10,10,500,10,pDC);Bresenhamline(10,10,10,100,pDC);Bresenhamline(10,100,600,120,pDC);Bresenhamline(500,10,600,120,pDC); 实验总结:Bresenham算法是一种很方便很实用很简单的算法,它对任意斜率的直线段具有通用性。对于斜率为正且
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国全自动电脑泊车系统市场调查研究报告
- 2025年中国便携式叶绿素仪市场调查研究报告
- 2025年中国五瓶组气体汇流排市场调查研究报告
- 2025年中国不锈钢非标准件市场调查研究报告
- 2025年中国丁腈光面手套市场调查研究报告
- 2025年中国1,3-二甲基丙撑脲市场调查研究报告
- 节奏感的培养技巧与方法乐理考试试题及答案
- 《汽车构造原理》课件
- 2025版标准房屋租赁合同范本
- 《电压稳定与防护技术》课件
- 学术英语写作课件-Academic-writing
- 北京法源寺话剧剧本
- 健康评估试题库
- 被执行人财产申报表
- 吊装安全确认表及技术交底
- DBJ41∕T 228-2019 河南省房屋建筑施工现场安全资料管理标准
- 三级安全教育考试试题(的)
- DB13 5325-2021 生活垃圾焚烧大气污染控制标准
- 芒针疗法课件
- 鼓乐铿锵课件 (2)
- 小学二年级下册科学课件1.《春夏秋冬》大象版(22张)ppt课件
评论
0/150
提交评论