DDA算法用斜截式表示直线方程,简化了乘法运算,但任存在浮点运算.

我们猜想,用别的方式表示直线,是否能把浮点运算也简化为整数运算.

在中点画线法中,我们用Ax+By+C=0的一般式方程来表示直线,即F(x,y)=Ax+By+C.

对于一般式表达的直线,有如下性质:

对于斜率0<|k|<1的直线,其步进方向为x正向,某点的下一步进x的中点为M(x+1,y+0.5),将中点M带入F(x,y)方程:

1.若值F(xm,ym)>0,则该中点在直线上方,直线离下方的Pd点更近,下一个y为上一个y

2.若值F(xm,ym)<0,则该中点在直线下方,直线离上方的Pu点更近,下一个y为上一个y+1

令d=F(xm,ym)

当下一步进点的y增加时,d的增量为A+B

下一步进点的y不变时,d的增量为A

推导如下:

因为y增量与d增量的取值只与d的正负有关,所以可以计算2d=2F(x+1,y+0.5)来消除浮点数.

总而言之,需要知道:

-直线上的某一点(x0,y0)

-沿着其步进方向点的d的正负(可以用2d替代计算)

-d<0,y=y+1,d=d+A+B

-d>0,y=y,d=d+A

由初始点(x0,y0)的坐标与d的正负来确定下一点的坐标与下一个d的值.

资料来源<计算机图形学-中国农业大学>

[计算机图形学算法]直线扫描转换算法-中点画线法相关推荐

  1. 计算机图形学 学习笔记(一):概述,直线扫描转换算法:DDA,中点画线算法,Bresenham算法

    前言 本笔记基于 http://www.icourse163.org/learn/CAU-45006?tid=1001746004#/learn/announce 感谢中国农大 赵明老师的分享~ 现在 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. python特性(八):生成器对象的send方法
  2. Install Qt5 on Ubuntu 16.04
  3. MapXtreme 操作地图时出现调用目标发生异常的解决方法--地图状态保存
  4. 市电中断时,数据中心机房如何保证持续供电?
  5. 环形链表—leetcode141
  6. 新课改实践下美术课程的新教学观
  7. python计算n到n+100之间所有奇数的和_Python基本操作题
  8. win7_FTP服务器配置教程_IIS
  9. [转载]赵匡胤做事有底线
  10. 陆振波的svm的matlab代码的解释,陆振波SVM的MATLAB代码解释
  11. 用python来开发webgame服务端(3)
  12. The 2019 ACM-ICPC China Shannxi Provincial Programming Contest B. Product(杜教筛+约数)
  13. 关于文案排版的一些基本技巧
  14. 《基于AI+大数据的医疗大健康最佳实践》---- AI 赋能临床试验受试者招募助力企业药物研发
  15. 自然语言处理中的文本聚类
  16. 【已解决】office提示你的许可证不是正版,你可能是盗版软件的受害者?
  17. 模块化多电平变换器载波移相与电容电压平衡控制MATLAB仿真
  18. 【汇正财经】股票价格有哪些分类?
  19. 你记得也好,最好你忘掉
  20. python研究股价_用python处理月度股价数据

热门文章

  1. 绘画武器设计教程,游戏CG原画学习教程之高级武器设计!
  2. 疫情期间跨境电商们要如何维护客户关系
  3. opencv全景图像拼接
  4. vue项目打包部署后css样式失效
  5. QR分解之HouseHolder变换
  6. 智乃的数字积木(easy version) (模拟
  7. 逛飙极兔牵手百世,快递行业三分江湖
  8. 前交叉韧带康复训练的办法
  9. 人工智能专业哪里好?去哪学AI?
  10. 通过SignalR技术整合即时通讯(IM)在.NET敏捷开发框架中落地