之前讲过用数值积分法(DDA)进行直线逼近,通过向下取整获取目标像素点。计算过程中每一次都需要加0.5这一浮点数,浮点数运算效率相比整数运算效率低的多,因此需要对此进行改进。

一.中点画线法

直线方程式通过一般式表示:,调整A、B参数为整数,且B为正整数。

点在直线上方则,点在直线直线下方则,点在直线上则

前提条件k∈[0,1],且坐标已经确定。接下来需要判断下一个点是取点还是取点。判断的依据是看的中点位于直线上方还是下方,若位于直线上方则取点,位于直线下方则取点,正好位于直线上则任取均可。

由上述可知,d的正负决定下一个像素点是进1还是保持不变。接下来考虑d的递推关系,共分为两种情况。

1.,即中点位于直线上方,下一个像素点选择为

2.,即中点位于直线下方,下一个像素点选择为

至此,d的增量关系已经确定,最后只需要确定的初值即可。已知P点为线段起点,则初始值可求。

总结:

         

二.例题推导

已知线段两端点A(0,0)、B(10,8),直线段方程式为

d -1.5 -1 0 -4 -3 -2 -1 0 -4 -3
y 0 1 2 2 3 4 5 6 6 7 8

三.拓展

上述表述中有两个限定条件1.斜率k∈[0,1];2.进给方向为斜向上。若要表述所有的情况,则还需要考虑斜向下进给情况,以及斜率k不为[0,1]的情况。

直线绘制算法-中点画线法相关推荐

  1. [计算机图形学算法]直线扫描转换算法-中点画线法

    DDA算法用斜截式表示直线方程,简化了乘法运算,但任存在浮点运算. 我们猜想,用别的方式表示直线,是否能把浮点运算也简化为整数运算. 在中点画线法中,我们用Ax+By+C=0的一般式方程来表示直线,即 ...

  2. 【计算机图形学】中点画线法实现任意斜率直线的绘制

    [计算机图形学]中点画线法实现任意斜率直线的绘制 一.中点画线法原理简介 1.建立基础 中点画线法的建立基础是数值微分画线法(DDA),其作为改进算法,沿用了DDA算法的增量思想,针对影响DDA算法效 ...

  3. 【计算机图形学|直线生成算法】中点画线法

    文章目录 概述 一.基本思想 二.构造判别式: 三.递推出增量 优化: 总结: 四.例题分析 五.伪代码 概述 中点画线法(Midpoint Line Algorithm)是一种画线(Line Dra ...

  4. 图形学--(中点画线法+Bresenham画线算法)

    编程环境:codeblocks+EGE库 用到的函数:putpixel(int x1,int y1,int color)  用某种颜色打亮一个坐标点. 这俩种算法都是用来在计算机上画一条直线的,那么我 ...

  5. 【计算机图形学】中点画线法实现焦点在x、y轴上的椭圆绘制

    [计算机图形学]中点画线法实现焦点在x.y轴上的椭圆绘制 一.中点画线法原理简介 1.建立基础 中点画线法的原理介绍见直线绘制的博文中点画线法实现任意斜率直线的绘制.基本思路是以下一点在椭圆外/内的位 ...

  6. 画毛毛虫代码计算机图形学,计算机图形学 实验 数值微分(DDA)法、中点画线法、Bresenham算法.doc...

    文档介绍: 实验名称数值微分(DDA)法.中点画线法.Bresenham算法实验时间年月日专业姓名学号预****操作座位号教师签名总评一.实验目的:1.了解数值微分(DDA)法.中点画线法.Brese ...

  7. 图形学---中点画线法---opengl中实现

    目的: 为了优化DDA算法中的浮点数运算(DDA中每次+k运算,|k|<1,所以存在浮点数运算),达到整数运算,提高效率. 基本思想: 当前像素点为(xp,yp),下一像素点为P1或P2.设P1 ...

  8. 【OpenGL C++】画一个空心汉字和一个圆,并填充汉字(中点画线法,中点画圆法,种子填充法)

    内容:画一个空心汉字和一个圆 设计一个画任意直线和圆的算法,可选所学的任一图形扫描转换算法(中点或bresenham算法),不能使用任何画线/画圆的API: 使用画线算法实现空心汉字的绘制,汉字必须为 ...

  9. 【计算机图形学】扫面转换算法(DDA算法 中点画线算法 Bresenham画线算法)

    模块1 扫描转换算法 一 实验目的 编写直线.弧线的光栅扫描转换算法,并对线宽与线形的算法加以探讨 用DDA算法.中点画线算法.Bresenham画线算法绘制直线(如果键盘输入数据,给出数据值:如果绘 ...

  10. 中点画线法c语言程序,计算机图形学 :中点画圆法

    由于安装了easyx的vc6.0只能用initgraph(x,y)初始化一个x*y的第一象限的画板.所以对于书上的画圆法我们需要稍微进行一点改变.这个算法只能画1/8的圆,其它7/8的圆只能通过对称关 ...

最新文章

  1. MSRA的Transformer跨界超越CNN,还解决了计算复杂度难题
  2. 什么是 dolby AC-3
  3. android python opencv_使用Python和OpenCV自动化Android游戏
  4. m227fdw恢复出厂设置_惠普M227fdw使用说明
  5. typeorm_Nestjs 热更新 + typeorm 配置
  6. LeetCode 2119. 反转两次的数字
  7. [20170825]不启动监听远程能连接数据库吗2
  8. 佳恩半导体完成数千万A轮融资
  9. Eratosthenes筛法求1-100之间的素数
  10. python生成器和迭代器区别_Python_生成器和迭代器的区别
  11. mt950报文解析_MT700报文升级的内容分析及对信用证实务操作的影响
  12. 佳能打印机清零后不显示界面_Vignelli佳能在界面设计中的无形
  13. Py之h5py:Python库之h5py库的简介、安装、使用方法详细攻略
  14. QQmm无处藏 2.1
  15. 今天睡眠质量记录74分
  16. 研发效率破局之道-学习思考
  17. 活动星投票趣味猜灯谜做投票系统制作二维码投票
  18. iStat Menus 的激活密码
  19. 1分钟让别人喜欢你(一)
  20. PC摄像头、CCD摄像机、CMOS摄像机的区别

热门文章

  1. idea顶部工具栏、底部工具栏、两边工具栏的显示与隐藏
  2. 水星无线路由启动dhcp服务器,水星无线路由器桥接设置桥接(图文详解) | 192.168.1.1登陆页面...
  3. 水星mw300r虚拟服务器,水星MW300R无线路由器如何设置【组图】
  4. 「经济理财」跟简七学理财之理财训练营(下)
  5. 鼠标右键失灵java_鼠标右键失灵怎么办
  6. 上滑解锁流程 - 安卓R
  7. 提高INSERT速度
  8. 仿京东商城主页(静态代码)
  9. 诚风老师-直销立法十年 直销企业迎来新机遇
  10. 向量交点坐标公式_直线的交点坐标与距离公式