数字积分法DDA(DDA(Digital Differential Analyzer)   

数字积分法又称数字微分分析法DDA(Digital differential Analyzer),是在数字积分器的基础上建立起来的一种插补算法。数字积分法的优点是,易于实现多坐标联动,较容易地实现二次曲线、高次曲线的插补,并具有运算速度快,应用广泛。

1.直线插补

基本原理(自己去看,不在赘述)

原理图:

实例:设有直线OE,起点在原点,终点E(xe=5,ye=4),寄存器均为三位二进制寄存器,用DDA法实现插补。

初始化 m=2^n=2^3=8,Σy=0,Σx=0

每一行出现溢出则移动一次。

结果:

实例2

设有一直线OE,如图3-20所示起点坐标O(0,0),终点坐标为E(4,3),累加器和寄存器的位数为3位,其最大可寄存数值为7(J≥8时溢出)。若用二进制计算,起点坐标O(000,000),终点坐标E(100,011),J≥1000时溢出。试采用DDA法对其进行插补。

结果

2. 圆弧插补

第一象限顺圆弧插补器

实例:

加工第一象限顺圆AB,如图3-27,起点A(0,5),终点B(5,0)选用寄存器位数n=3,经过 “半加载”处理后,试用DDA法进行插补计算。

JVX和JVY初始值在顺圆弧插补图中有解释(可以根据第一象限顺圆弧运动开始时x变化快y变化慢,结束是x变化慢y变化快来理解)。

结果:

提高插补精度的措施:

对于DDA圆弧插补,径向误差可能大于一个脉冲当量。

减少误差的方法有:

①减小脉冲当量;

②采用累加器预置数法(规格化)

  即在DDA插补之前,将JRX,JRY的初值不置零,而是预置2^(n-1),使其二进制数最高有效位置“1”,其它各位置零,若再累加100…000,累加器就可以产生第一个溢出脉冲。这种处理方式称为“半加载”(上图中初始值为4就是使用了半加载。)

3. DDA圆弧插补与直线插补的主要区别

  • 圆弧插补中被积函数寄存器寄存的坐标值与对应坐标轴积分器的关系恰好相反。
  • 圆弧插补中被积函数是变量,直线插补的被积函数是常数。
  • 圆弧插补终点判别需采用两个终点计数器。对于直线插补,如果寄存器位数为n,无论直线长短都需累加2^n次到达终点。

数字积分法DDA(DDA(Digital Differential Analyzer)的更多相关文章

  1. 菜鸟学四轴控制器之3:数字积分法DDA实现直线插补

    上一篇的逐点比较法显然是无法画一条有倾角的直线的.因为X轴和Y轴永远都不同步,也就是像打台球一样,你打一个,我打一个,如果我进了球,我再接着打一个. 也就是说,如果直线为45度,也是没有办法画出来的, ...

  2. 两种画线算法(DDA&Bersenham)

    DDA(digital differential analyzer) 由直线的斜截式方程引入 对于正斜率的线段,如果斜率<=1,则以单位x间隔(δx=1)取样,并逐个计算每一个y值 Yk+1 = ...

  3. DDA, Bresenham line's algorithm and Voxel Traversal used in the Grid-Accelerator in PBRT

        - DDA(Digital Differential Analyzer, 数值微分法) -    计算机图形学中,经常会遇到一些计算机中”经典“的问题.例如,如何利用计算机”离散“的特质,模拟 ...

  4. DDA算法

    [DDA算法] Digital Differential Analyzer,DDA算法是一种线段扫描转换算法.(线段光栅化算法) DDA算法优缺点: 1.消除了直线方程中的乘法计算,而在x.y方向使用 ...

  5. 计算机图形学之扫描转换直线-DDA,Bresenham,中点画线算法

    1.DDA算法 DDA(Digital Differential Analyer):数字微分法 DDA算法思想:增量思想 公式推导: 效率:采用了浮点加法和浮点显示是需要取整 代码: void lin ...

  6. 直线扫描转换-DDA算法

    直线扫描转换-DDA算法 直线段的扫描转换算法 已知两个点,求直线. 为了在光栅显示器上用这些离散的像素点逼近这条直线,需要知道这些像素点的x,y坐标. 求出过P0,P1的直线段方程: y=kx+b ...

  7. 【十天自制软渲染器】DAY 02:画一条直线(DDA 算法 & Bresenham’s 算法)

    推荐关注公众号「卤蛋实验室」或访问博客原文,更新更及时,阅读体验更佳 第一天我们搭建了 C++ 的运行环境并画了一个点,根据 点 → 线 → 面 的顺序,今天我们讲讲如何画一条直线. 本文主要讲解直线 ...

  8. 计算机图形学(二)输出图元_3_画线算法_2_DDA算法

    DDA算法        数字微分分析仪(digital differential analyzer, DDA)方法是一种线段扫描转换算法.基于使用等式(3.4)或等式(3.5)计算的&x或& ...

  9. 图形学3D渲染管线学习

    图形学3D渲染管线 DX和OpenGL左右手坐标系不同,会有一些差距,得出的矩阵会不一样; OpenGL的投影平面不是视景体的近截面: 顶点(vertexs) 顶点坐标,颜色,法线,纹理坐标(UV), ...

随机推荐

  1. Stooge排序

    又叫臭皮匠排序... 在<算法导论>作为反例出现的漂亮但极其低效的排序算法. 基本思路是:只要数组长度大于3,先将头与尾排序,然后递归调用排序前三分之二,再递归调用排序后三分之二,最后再递 ...

  2. 浅谈zygote服务中的设计思路

    zygote服务是Android启动和服务APK的核心服务,每个APK都是通过zygote启动,今日阅读它的源码学习到一个不错的设计思路. 首先看看一个APK通过zygote的启动流程: 按照一般的设 ...

  3. solr索引

    solr索引 当我们真正进入到Lucene源代码之中的时候,我们会发现: • Lucene的索引过程,就是按照全文检索的基本过程,将倒排表写成此文件格式的过程. • Lucene的搜索过程,就是按照此 ...

  4. Windows下oracle打补丁步骤

    1.Oracle官网下载对应的补丁文件(需要oracle支持账号才能下载) 2.设置ORACLE_HOME set oracle_home=F:\oracle\product\11.2.0\dbhom ...

  5. 关于url路径的定义方式

    一.概述 无论是做网页,还是WEB系统,我们都会用到链接,图片,文件的地方,这些地方都涉及到路径的问题,例如:background-image:url();这一CSS样式,而url()的定义方式有两种 ...

  6. 轻量级mvvm Web开发框架 postby:http://zhutty.cnblogs.com

    今天特别郁闷,怎么说呢,之前一直就用angular,然后这两天用的是avalon这东西,反正,一开始没时间去玩它,第一个任务就是封装个jq插件,实现一个小功能.反正呢,就是越写越郁闷.用过angula ...

  7. [React Testing] Reusing test boilerplate

    Setting up a shallow renderer for each test can be redundant, especially when trying to write simila ...

  8. iOS动画开发之五——炫酷的粒子效果

    在上几篇博客中,我们对UIView层的动画以及iOS的核心动画做了介绍,基本已经可以满足iOS应用项目中所有的动画需求,如果你觉得那些都还不够炫酷,亦或是你灵光一现,想用UIKit框架写出一款炫酷的休 ...

  9. 将vim改造成C/C++开发环境(IDE) 2011

        [参考资料]吴垠的“手把手教你把Vim改装成一个IDE编程环境”在Fedora下成功将Vim打造成适用于C/C++的IDE用Vim搭建C/C++开发环境 Ubuntu下vim+ctags的配置 ...

  10. 1.引入必要的文件 2.加载 UI 组件的方式 4.Parser 解析器

    //引入 jQuery 核心库,这里采用的是 2.0 <scripttype="text/javascript"src="easyui/jquery.min.js& ...