DDA划线法(Digital Differenttial Analyzer,数值微分法)
DDA划线法(Digital Differenttial Analyzer,数值微分法)@TOC
利用计算机画出一条高质量直线
输入:直线两个端点的坐标p0(x0,y0)和p1(x1,x2)
输出:最佳逼近这条直线的像素点集
在计算机中这些点集都是离散的,高质量直线的要求应满足
以下三个条件:
(1)直线要直,像素点尽可能靠近理想直线
(2)直线要均匀,连续,点数不能多也不能少
(3)显示线段的速度应该快,不能有卡顿现象(像素点的定位不能用乘除法,要用加减法,而且是正数加减法)
DDA算法是计算机图形学中画直线的基本算法,主要根据直线的斜截方程式(y=kx+b)推导出来的。
假设(|k|<=1)
x(i+1)=xi+1
y(i+1)=yi+k
推导 y0=kx0+b;
x1=x0+1;
y1=k(x0+1)+b=kx0+k+b=y0+k;
最终下一坐标(x,int(y+0.5) //y取整)
假设(|k|>1)
y(i+1)=yi+1;
x(i+1)=xi+1/k
推导 y0=kx0+b;
y1=y0+1;
y0+1=k(x1)+b; x1=(y0+1-b)/k;
x1=x0+1/k;
最终下一坐标(int(x+0.5),y) //x取整)
代码
void CthreeView::OnDraw(CDC* pDC)
{CthreeDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;//TODO: 在此处为本机数据添加绘制代码//DDA算法int x0 = 100, y0 = 100, x1 = 300, y1 = 200;float x, y, i, dx, dy, k;dx = (float)(x1 - x0); dy = (float)(y1 - y0);k = dy / dx; y = y0; x = x0;if (abs(k) < 1){for (; x <= x1; x++){pDC->SetPixel(x, int(y + 0.5), RGB(255, 0, 0));y = y + k;}}if (abs(k) >= 1){for (; y <= y1; y++){pDC->SetPixel(int(x + 0.5), y, RGB(255, 0, 0));x = x + 1 / k;}}
}
DDA划线法(Digital Differenttial Analyzer,数值微分法)相关推荐
- DDA(数值微分法)绘制直线(C++,VS2019)
1.DDA(Digital Differential Analyzer)算法 DDA算法是计算机图形学中最简单的绘制直线算法. 已知直线段两个端点P0(x0,y0),P1(x1,y1). 则可求得直线 ...
- 数值微分法绘制直线c语言,OpenGL数值微分法(DDA)画直线
DDA算法,是计算机图形学中一种基于直线的微分方程来生成直线的方法,由于有浮点数运算与取整,该算法不利于硬件实现. 其主要思想是由直线公式y = kx + b推导出来的. 我们已知直线段两个端点P0( ...
- 数值微分法(DDA)详解
数值微分法(DDADDADDA) 一.原理 假定直线的起点.终点分别为:(x0,y0)(x_0,y_0)(x0,y0),(x1,y1)(x_1,y_1)(x1,y1),且都为整数. 则过端点P ...
- 计算机图形学算法【1】——直线画法(数值微分法)
计算机图形学算法[1]--直线画法(数值微分法) 以下所有代码均在VS2010下的MFC框架下使用 DDA(数值微分法)介绍 一.基本原理 通过计算直线的斜率k和截距b,y = kx+b 1.计算起点 ...
- PYTHON脚本将excl表格中的科学计数法转变为普通数值
最近公司在开发自动化测试的上位机,在处理示波器的数据的时候发现示波器保存的csv文件的值是用科学计数法的,在此分享一种方法可以将csv文件中的科学计数法转换成普通数值并转存到excl文件中的方法 先上 ...
- 计算机图形学 之 DDA直线算法(数值微分法)
1. 直线段的扫描转换算法 在数学上,直线就是由无穷多个点组成的, 在计算机屏幕显示的话, 需要做一些处理,对于光栅显示器 光栅显示器上就是用有限多个点去逼近直线, 那么这些有限个点,我们需要知道每一 ...
- PLSQL Developer中数值字段由科学计数法改为普通数值显示
转载自:https://jingyan.baidu.com/article/90808022ffa3defd91c80f23.html?qq-pf-to=pcqq.group 在使用PLSQL Dev ...
- matlab中牛顿下山法实例,非线性方程的数值解法牛顿下山法matlab
非线性方程的数值解法牛顿下山法matlab 1 非线性方程的数值解法 --计算物理实验作业九 陈万 物理学2013级 130******** ● 题目: 用下列方法求0133=--=x x f(x)在 ...
- matlab中牛顿下山法实例,非线性方程的数值解法牛顿下山法matlab.docx
非线性方程的数值解法牛顿下山法matlab.docx 1 非线性方程的数值解法 --计算物理实验作业九 陈万 物理学2013级 13020011006 题目: 用下列方法求 在 附近的根.根的准确 ...
- 计算机图形学(三种画线算法)
第二章:光栅图形学算法 1.光栅显示器:光栅扫描式图形显示器简称光栅显示器,是画点设备,可看作是一个点阵单元发生器,并可控制每个点阵单元的亮度 2.由来:随着光栅显示器的出现,为了在计算机上处理.显示 ...
最新文章
- 在CentOS上安装TCP协议性能评测工具tcpdive
- Android 笔记:BroadcastReceiver
- Fetch -- http请求的另一种姿势
- python基础语法合集-Python基础语法(四)—列表、元组、字典、集合、字符串
- 用前序和中序重建二叉树 python
- sql中datetime日期类型字段比较(mysqloracle)
- Shell sed命令,替换文件内容、替换目录下所有文件内容、读取文件内容
- 将 SharePoint 2010 网站集升级到 2013 (含沙盒方案)
- 用三张图看透 I/O,学习区分同异步阻塞
- php教育网站设计案例_南广东区优秀网站设计案例集锦第四期
- 巴菲特对优质公司买卖
- 京牌车辆过户以后车辆保险怎么办?
- 如何批量打印 带图片名字的图片?Word 宏命令
- java_获得用户显示器大小
- 光纤光猫连接自己路由器的设定
- 【3】计算机原理-显卡工作模型
- ps快捷键对应的英文字母缩写
- 信息与电脑杂志信息与电脑杂志社信息与电脑编辑部2022年第8期目录
- C语言中%d,%s,%x,%f,%.100f,%的意思
- 从GitHub上下载项目后如何运行,学习
热门文章
- 从时间上算,我和李笑来是同一批人 | 十年币圈生存实录
- 论文阅读——LSQ:Learned Step Size Quantization
- 基于第三代测序技术的基因组组装方法及其在烟草中的应用
- 路由器和三层交换机区别
- 杭电计算机研究生就业报告,实力杭电 | 留杭就业人数又双叒叕NO.1,快来围观杭电2018届毕业就业质量报告...
- ALSA子系统(十三)------snd_pcm_hw_refine硬件参数重定义
- 学画画软件app推荐_绘画APP推荐|很全的学画画的APP推荐
- 这是一个赞赏码(附赞赏码生成方法)
- npm安装包报400错误
- 银河麒麟V10(Kylin Linux Advanced Server V10 (Tercel))安装Python3.8、MySQL5.7、Redis