@python实现DDA算法

DDA 算法,即数值微分法(Digital Differential Analyzer),是一种基于直线的微分方程

线段的光栅化过程可以循环的让 x方向变化一个像素或者让 y方向变化一个像素,相应的另一个方向变化0 个像素或者1 个像素得到。这样计算直线段上的每个像素的坐标只需执行一次浮点数加法即可。此外,为了使得生成的直线段尽量连续均匀,相邻两个像素之间 ,x或y 的坐标最多相差 1 个像素。

生成直线的方法。
先上源码:

import matplotlib.pyplot as pltdef DDALine(x1, y1, x2, y2, color):dx = x2 - x1dy = y2 - y1steps = 0# 斜率判断if abs(dx) > abs(dy):steps = abs(dx)else:steps = abs(dy)# 必有一个等于1,一个小于1delta_x = float(dx / steps)delta_y = float(dy / steps)# 四舍五入,保证x和y的增量小于等于1,让生成的直线尽量均匀x = x1 + 0.5y = y1 + 0.5for i in range(0, int(steps + 1)):# 绘制像素点plt.plot(int(x), int(y), color)x += delta_xy += delta_yplt.show()def main():x = 0y = 0xEnd = 5yEnd = 2color = "r."DDALine(x, y, xEnd, yEnd, color)if __name__ == '__main__':main()

效果展示:

算法特点:
DDA 算法中, 必须用浮点数表示,而且每一个像素的绘制都必须对 x 和 y 坐标进行舍入取整,这使得该算法不利于硬件实现。

python实现DDA算法相关推荐

  1. Python matplotlib 实现DDA算法

    Python matplotlib 实现DDA算法 DDA算法全称数值微分法(Digital Differential Analyzer),是用数值方法解微分方程,即通过对x和y各增加一个小量,计算下 ...

  2. 利用DDA算法得到直线上的像素点坐标

    图片霍夫变换拟合得到直线后,怎样获得直线上的像素点坐标? 这是我今天在图像处理学习中遇到的问题,霍夫变换采用的概率霍夫变换,所以拟合得到的直线信息其实是直线的两个端点的坐标,这样一个比较直接的思路就是 ...

  3. python数据结构与算法总结

    python常用的数据结构与算法就分享到此处,本月涉及数据结构与算法的内容有如下文章: <数据结构和算法对python意味着什么?> <顺序表数据结构在python中的应用> ...

  4. 数学推导+纯Python实现机器学习算法:GBDT

    Datawhale推荐 作者:louwill,Machine Learning Lab 时隔大半年,机器学习算法推导系列终于有时间继续更新了.在之前的14讲中,笔者将监督模型中主要的单模型算法基本都过 ...

  5. 以图搜图Python实现Hash算法

    以图搜图(一):Python实现dHash算法 http://yshblog.com/blog/43 以图搜图(二):Python实现pHash算法 http://yshblog.com/blog/4 ...

  6. em算法python代码_EM 算法求解高斯混合模型python实现

    注:本文是对<统计学习方法>EM算法的一个简单总结. 1. 什么是EM算法? 引用书上的话: 概率模型有时既含有观测变量,又含有隐变量或者潜在变量.如果概率模型的变量都是观测变量,可以直接 ...

  7. Python:SMOTE算法——样本不均衡时候生成新样本的算法

    Python:SMOTE算法 直接用python的库, imbalanced-learn imbalanced-learn is a python package offering a number ...

  8. Python基于聚类算法实现密度聚类(DBSCAN)计算

    本文实例讲述了Python基于聚类算法实现密度聚类(DBSCAN)计算.分享给大家供大家参考,具体如下: 算法思想 基于密度的聚类算法从样本密度的角度考察样本之间的可连接性,并基于可连接样本不断扩展聚 ...

  9. NLP之ASR:基于python和机器学习算法带你玩转的语音实时识别技术

    NLP之ASR:基于python和机器学习算法带你玩转的语音实时识别技术 导读 带你玩转python实现的语音实时识别技术(包括音频混音.回声消除.噪音滤除.杂音消除.静音检测等方法) 视频观看: 软 ...

  10. python文字识别算法_Python图像处理之图片文字识别(OCR)

    OCR与Tesseract介绍 将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR).可以实现OCR 的底层库并不多,目前很多库都是使用共同的几 ...

最新文章

  1. 利用OpenCV进行边缘检测
  2. SpringMVC——自定义拦截器、异常处理以及父子容器配置
  3. OpenCV实现基于傅里叶变换(FFT)的旋转文本校正(文字方向检测)
  4. (转)记录一次迁移 wss WebSocket 的事故
  5. 【Effective Java】6、使用复合优先于使用继承
  6. 【ubuntu】vim语法高亮设置无效
  7. 两种参数类型_布尔参数这些缺点不能忍?不如试试枚举吧
  8. KD_Tree 算法
  9. 源码编译altas mysql_Atlas的安装
  10. 在linux大量进程里只看root的命令
  11. Lua 正确的尾调用(proper tail call)
  12. python-appium手机自动化测试(仅需安装包)前期准备(pydev-eclipse编辑器)
  13. python界面-图形界面
  14. 解决连接深信服vp无法通过burpsuit抓包的问题
  15. STM32F103C8T6实现LED闪烁
  16. H.266/VVC测试软件VTM
  17. 21、python的K-means聚类分析方法案例代码
  18. #ncbi #blast
  19. UI(六) - 如何架构UI框架
  20. Tomcat优化方案

热门文章

  1. 计算机c盘删除的文件怎么找回,C盘空间不足怎么办 删除C盘文件教程【详解】...
  2. P2P-JXTA学习(1)-入门
  3. 基于JavaEE的学生信息管理(选课)系统论文
  4. windows服务器远程端口,查看和修改Windows服务器远程桌面的默认端口
  5. 老男孩linux——36期学员
  6. c语言程序设计高校饭卡系统,C语言课程设计-学生饭卡管理系统(45页)-原创力文档...
  7. 苹果手机升级13无法开机_苹果手机更新系统后无法开机
  8. Linux网络服务-LAMP之Php基于Apache的模块实现
  9. 华为设备配置ERPS单环多实例
  10. Linux word转pdf汉字乱码