- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
直线的扫描转换——中点Bresenham算法符号说明:P——当前点;M——中点;Pd和Pu——下一步可能位置;Q——理想直线在x=xi+1位置上的点;第30页,共58页,星期日,2025年,2月5日直线的扫描转换——中点Bresenham算法算法说明:设直线斜率在0~1之间,且位于第一象限。光标走步规则为:每次在x方向上加1,y方向根据误差项判断,或加1或加0。第31页,共58页,星期日,2025年,2月5日直线的扫描转换——中点Bresenham算法误差项判别式构造:当前点P,下一个点可能为Pd(即yi+1=yi点),可能为Pu(即yi+1=yi+1点)。M为Pd与Pu的中点。若M在Q点下方,说明Pu点离直线近,则有yi+1=yi+1;若M在Q点上方,说明Pd点离直线近,则有yi+1=yi;第32页,共58页,星期日,2025年,2月5日直线的扫描转换——中点Bresenham算法直线方程为:要判断点M与直线的位置关系,只需要把M的坐标代入直线方程,若:F(xM,yM)=0,即点M在直线上;F(xM,yM)0,即点M在直线上方;F(xM,yM)0,即点M在直线下方;第33页,共58页,星期日,2025年,2月5日直线的扫描转换——中点Bresenham算法点M与点Q误差项d判别式推导:当di0时,M在直线下方,Pu(即yi+1=yi+1点)为下一个点;当di=0时,M在直线上方或在直线上,Pd(即yi+1=yi点)为下一个点。根据递推思想,推导出di与di+1的关系。第34页,共58页,星期日,2025年,2月5日直线的扫描转换——中点Bresenham算法当di0时,xi+1=xi+1;yi+1=yi+1;则有:第35页,共58页,星期日,2025年,2月5日直线的扫描转换——中点Bresenham算法当di=0时,xi+1=xi+1;yi+1=yi;则有d的初值:绘制直线时,光点最初在直线的起点P0(x0,y0)处,可推导出:d0=0.5-k第36页,共58页,星期日,2025年,2月5日直线的扫描转换——中点Bresenham算法直线的斜率k=dy/dx,将斜率带入判别式:当di0时,则有当di=0时,则有d的初值:di的正负决定下一个点的位置,与di的具体数值无关,因此,统一以2dxHdi替代di,以简化判别式。第37页,共58页,星期日,2025年,2月5日直线的扫描转换——中点Bresenham算法当di0时,则有当di=0时,则有d的初值:因此在代码中最终用到的判别式为:第38页,共58页,星期日,2025年,2月5日直线的扫描转换——中点Bresenham算法绘制点(x,y)yesno第39页,共58页,星期日,2025年,2月5日直线的扫描转换——中点Bresenham算法上述推导的中点Bresenham算法绘制直线的判别式适用于直线斜率在0~1之间的情况。观察例mid_bresenham.cpp绘制斜率在0~1之间的直线和斜率大于1的直线。当直线大于1时,可不必重新推导判别式,只需交换x和y的规则。bresenham.cpp第40页,共58页,星期日,2025年,2月5日直线的扫描转换——Bresenham算法中点Bresenham算法的误差项判别式需要用到直线斜率,改进后的Bresenham算法,思路保持不变,对误差项判别式进行简化。Bresenham算法直接比较距离t和s的大小,来确定下一个绘制的像素。第41页,共58页,星期日,2025年,2月5日计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换广东工业大学机电学院图学与数字媒体工程系基本图形生成算法直线圆弧第1页,共58页,星期日,2025年,2月5日通常认为,基本二维图形包括点、直线、圆、椭圆、多边形域和字符串等。复杂曲线及各种复杂图形均可由直线段和圆弧来拟合,因此研究直线和圆弧的生成算法是二维图形生成技术的基础。第2页,共58页,星期日,2025年,2月5日在光栅显示器生成一个对象,实质上是往帧缓冲区的相应单元中写入数据;如画一条直线,实质上是发现最佳逼近直线的像素序列、并填入相应颜色的过程,这个过程称为直线的光栅化,或者称为直线的扫描转换。第3页,共58页,星期日,2025年,2月5日“发现最佳逼近直线的像素序列”就是发现直线生成的算法。不同的算法有不同的效率,但各种算法的核心都是围绕着判别和生成x、y增量的过程和方法(走笔规则)展开研究的。第4页,共58页,星期日,2025年,2月5日通常从以下四方面评价直线扫描转换算法的质量:一、显示像素点应
文档评论(0)