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

2023-11-08 19:51

本文主要是介绍计算机图形学(一):逐点比较法与直线、圆弧的插补生成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

逐点比较法

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

逐点比较法是针对笔式绘图机提出的。根据绘图机的结构原理及数字控制原理,绘图机的笔架可能的移动方向(称为走步方向)有八个:+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

这篇关于计算机图形学(一):逐点比较法与直线、圆弧的插补生成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/372123

相关文章

Django HTTPResponse响应体中返回openpyxl生成的文件过程

《DjangoHTTPResponse响应体中返回openpyxl生成的文件过程》Django返回文件流时需通过Content-Disposition头指定编码后的文件名,使用openpyxl的sa... 目录Django返回文件流时使用指定文件名Django HTTPResponse响应体中返回openp

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I