



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机图形学实验报告实验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年山东省烟台市事业单位工勤技能考试题库及答案
- CN120269323A 冷却器的拆装装置及方法 (华能澜沧江水电股份有限公司)
- 轨道交通考试试题及答案
- 汽轮机汽封系统
- 语言学纲要(全套课件354P)
- 李东垣《脾胃论》【译文】
- 复变函数与积分变换教案
- 湖北厂房施工进度计划网络图和横道图
- GB/T 7424.2-2008光缆总规范第2部分:光缆基本试验方法
- GB/T 2423.22-2012环境试验第2部分:试验方法试验N:温度变化
- 最新低压电工安全培训课件
- 水土保持工程质量评定表
- 整机部整机出货检验重点标准
- 人像摄影:户外人像摄影课件
评论
0/150
提交评论