逐点比较法

逐点比较法就是在输出直线或圆弧的过程中,每走完一步就与理论的直线或圆弧进行比较,确定当前点是在线或弧上,还是在线或弧的一侧,然后再决定下一步的走向,这样一步一步地逼近所画直线或圆弧。

逐点比较法是针对笔式绘图机提出的。根据绘图机的结构原理及数字控制原理,绘图机的笔架可能的移动方向(称为走步方向)有八个:+X、-X、+Y、-Y、+X+Y、-X+Y、-X-Y、+X-Y。其中+X、-X、+Y、-Y四个走步方向是一般绘图机都提供的,称为基本走步方向。

可见,绘图机的基本绘图元素是与走步方向相对应的小直线段。绘图机所画的一般直线和曲线,实际上是由许多小直线段所组成的折线来逼近的。根据所画图线的已知条件(如直线两个端点坐标,圆弧的起点、终点和圆心等)计算画图所需要的一系列中间点(即折线的端点)的坐标,称为插补运算。根据插补对象不同,插补运算有直线插补、圆弧插补和抛物线插补等,前两种是基本的插补运算。插补运算可用软件或硬件实现,不少绘图机采用插补器(或称线发生器、弧发生器)来完成插补运算,目的在于提高图线生成速度。逐点比较法可用于插补运算。

直线的插补生成

若画第一象限的直线OA,起点为O(0,0),终点为A(xa,ya),设绘图笔当前的位置为K(xk,yk)。点K相对于直线OA的位置有三种情况:点K在OA上方,点K在OA上以及点K在OA下方。为了判断点K与OA的相对位置,引入偏差函数Fk:

因此,对第一象限内的直线生成规定如下:

即偏上了向右走;偏下了向上走。设▲x=1,则:

从而根据新偏差Fk+1的正负号再确定绘图笔的下一步走向。这样逐步进行,直至终点。终点判断的方法为:

以第一种方法为例:

设J为总走步数,则J=|xa|+|ya|

每走一步,J--,J==0时到达终点

对于其他象限内的直线线段,走向规定如下图所示:

偏差的递推公式,用|x|和|y|代替x和y:

例题:

圆弧的插补生成

偏差判别->坐标进给->偏差递推->终点判别

  1. 偏差判别

因此:Fi>0在圆外;Fi=0在圆上;Fi<0在圆内。

  1. 坐标给进

若逆时针,从A到B:

若顺时针,从B到A:

  1. 偏差递推

若逆时针,从A到B:

若顺时针,从B到A:

  1. 终点判别

其他线段的走向规定:

例题1:

运算过程:

例题2

计算机图形学(一):逐点比较法与直线、圆弧的插补生成相关推荐

  1. 计算机图形学E7——OpenGL 交互式三角形裁剪直线

    其他计算机图形学实验见 链接 #include<gl/glut.h> #include<iostream> #include<algorithm> #include ...

  2. 计算机图形学E2——OpenGL Bresenham算法画直线

    其他计算机图形学实验见 链接 要求 使用Bresemham算法画直线,并且通过鼠标可以实现交互操作 参考代码: 代码1 代码2 代码3(代码好理解) 代码4(讲解很全面) #include<io ...

  3. 计算机图形学直线算法论文,《计算机图形学》中直线生成算法的教学心得

    摘要:<计算机图形学>是计算机科学与技术专业一门重要的专业课,其中直线生成算法是教学重点之一.该文通过分析几种直线生成算法的特点,阐述了理论教学和实践教学的重点和难点,总结了教学的体会和心 ...

  4. 计算机图形学直线线型实验报告,计算机图形学实验报告-直线中点bresenham算法的实现资料.doc...

    计算机图形学实验报告-直线中点bresenham算法的实现资料.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 29.90 积分 计算机图形 ...

  5. 逐点比较法直线插补MATLAB(四个象限分开)

    现在还是只能分开运行,还在研究怎么合在一起 第一象限 Xs = input('请输入起点横坐标XIn X0= '); Ys = input('请输入起点纵坐标YIn Y0= '); Xe = inpu ...

  6. 【计算机图形学 】Cohen-Sutherland 直线裁剪算法 | OpenGL+鼠标交互

    文章目录 其他计算机图形学实验 前言 代码借鉴 步骤 1.点的结构体 2. 创建用于裁剪的窗口并绘制 3.画点函数 4. Cohen-Sutherland 直线裁剪算法部分 4.1 判断点所在位置,生 ...

  7. 圆弧插补程序c语言,用C语言写的简易的逐点比较法插补算法,包括直线逐点插补和圆弧插补...

    源文件:https://pan.baidu.com/s/17FQKqn3UaEPQHkmTcOXKOg 提取码:atb2 #include #include #include #include //运 ...

  8. 计算机图形学三(补充):重心坐标(barycentric coordinates)详解及其作用

    重心坐标(Barycentric Coordinates) 1 重心坐标的定义及求解 1.1 基础定义 1.2 几何面积角度求解 1.3 坐标系角度求解 2 重心坐标的运用 Reference (本篇 ...

  9. myrio与fpga编程_【虚拟课堂】LabVIEW与MyRIO的逐点比较法插补实现(含FPGA)

    小本本记下来 最近3D打印机用的有点爽,想用LabVIEW做一个自己的3D打印机玩一玩,所以今天介绍的是利用LabVIEW与MyRIO实现逐点比较法的直线与圆弧插(涉及FPGA).首先我们来介绍一下逐 ...

  10. 现代计算机图形学入门ppt,计算机图形学完整课件.ppt

    计算机图形学完整课件.ppt (326页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 计算机图形学 第一章.绪论第二章.基本图形生成原理第 ...

最新文章

  1. HTML5实现手势屏幕解锁
  2. HTTP 错误 404.3 – Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序...
  3. Sharpdevelop学习
  4. 【MySQL】玩转定时器
  5. C语言中的位域 bit field [转]
  6. Hi3516A开发--I2C/SPI读写命令
  7. “重构”黑洞:26岁MIT研究生的新算法
  8. 【干货】mysql查询重复数据sql
  9. 前端学习(2353):button按钮组件的使用
  10. iotop iostat_适用于SQL Server DBA的有用的Linux命令– iotop和iostat
  11. ViewStub使用
  12. centos6.5安装自动化工具ansible和图形化工具tower
  13. 计算机MAR代表什么,MAR是什么意思?
  14. win7声音小图标不见了,如何修复
  15. win 7 防火墙设置
  16. 手机充值了还是显示无服务器,手机显示已联网,但却不能用,怎么办?
  17. 怎么在html中加入特效文字,如何使用HTML5+css3实现粒子效果文字动画特效(附完整代码)...
  18. 支持ESMTP身份验证的邮件发送
  19. C++中用 GetModuleFileName()函数 获得程序当前的运行目录
  20. 分布式事务之Seata个人吐血整理

热门文章

  1. 未来城市技术v1.0
  2. Unity 手游项目优化建议(杂文)
  3. 用计算机算卷积的规则,信号卷积计算公式与在线计算器_三贝计算网_23bei.com
  4. Datawhale活动-二手车价格预测 task1task2
  5. 结合DDD讲清楚:后端系统分析七大维度(长文多图)
  6. 如何申请外贸公司的邮箱
  7. swiper轮播多个分页指示器
  8. 【AI每日播报】AlphaGo明年复出,苹果希望Siri的声音更像人
  9. 安防AI智能视频平台EasyCVR平台级联支持开启向下级的订阅功能
  10. 亚马逊echo中国使用_如何在Amazon Echo上使用Twitter