插补算法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、笛卡尔坐标系和设备坐标系中 相关概念的区别
⑵直线 ·在笛卡尔坐标中的直线,如(1.2, 1.6), (6, 4) 在笛卡尔坐标中的直线, 在笛卡尔坐标中的直线 ) ·在屏幕坐标中的直线:用最逼近直线上的像素 在屏幕坐标中的直线: 在屏幕坐标中的直线 点表示。 点表示。
三、设计图形扫描转换时应注意: 设计图形扫描转换时应注意:
第二节、直线的扫描转换 第二节、
光栅图形显示器显示一条直线时, 光栅图形显示器显示一条直线时,实际上 将最逼近于该直线的像素点选中,并赋予 是将最逼近于该直线的像素点选中 并赋予 相应的颜色或灰度值。 相应的颜色或灰度值。
直线显示图
一、逐点比较法
基本思想:在绘制直线过程中, 基本思想 在绘制直线过程中,每绘制一个 在绘制直线过程中 点就与原直线进行比较, 点就与原直线进行比较,根据比较的结果决 定下一步的走向,这样一步一步逼近直线。 定下一步的走向,这样一步一步逼近直线。 该算法执行中要使得每一个绘制点尽可 能靠近直线而不发生远离直线的趋向。 能靠近直线而不发生远离直线的趋向。由一 点到下一点的走向方法有在X,Y方向上同时 点到下一点的走向方法有在 方向上同时 走一步,或只在X方向上走一步 或只向Y 方向上走一步, 走一步,或只在 方向上走一步,或只向 方向走一步。 方向走一步。
图形基元包括: 图形基元包括:
一级图形元素
点、线
多边形、曲线、 多边形、曲线、 字符串 实心图形 或称图形填充) (或称图形填充)
二级图形元素
第一节、扫描转换算法 第一节、
一、 坐标系
1.用户坐标系 . 在实际世界中用来描述物体的位置、形状等。 在实际世界中用来描述物体的位置、形状等。坐 标单位任意,坐标值是实数、范围不限。 标单位任意,坐标值是实数、范围不限。 2.笛卡尔坐标系(直角坐标系) .笛卡尔坐标系(直角坐标系) 在计算机图形学中使用用来描述物体。 在计算机图形学中使用用来描述物体。 3.设备坐标系 . 在某一特定设备上用来描述物体, 在某一特定设备上用来描述物体,如显示器的屏 幕坐标系,绘图仪的绘图坐标系。 幕坐标系,绘图仪的绘图坐标系。坐标单位为像 步长,即设备的分辨率。坐标值是整数, 素、步长,即设备的分辨率。坐标值是整数,有 固定的取值范围。 固定的取值范围。
三、数值微分(DDA)法 数值微分(DDA)法
设过端点P 的直线段为L(P0 ,P1), 设过端点 0(x0 ,y0)、P1(x1 ,y1)的直线段为 、 的直线段为 , 则直线段L的斜率 则直线段 的斜率 L的起点 0的横坐标 0向L的终点 1的横坐标 1步进, 的起点P 的横坐标x 的终点P 的起点 的终点 的横坐标x 步进, 取步长=1(个象素 个象素), 的直线方程y=kx+b计算相应的 取步长 个象素 ,用L的直线方程 的直线方程 计算相应的 y坐标,并取象素点 坐标, 率 作为当前点的坐标。 坐标 并取象素点(x,round(y))作为当前点的坐标。因 作为当前点的坐标 为: yi+1 = kxi+1+b = k1xi+b+k△x △ = yi+k△x △ 当△x =1; yi+1 = yi+k。当x每递增1,y递增k(即直线斜 率)。 需要进行浮点数运算; 运行效率低; 需要进行浮点数运算; 运行效率低; 不便于用硬件实 现。
直线斜率在0~1之间,该方法类似于中点法, 之间,该方法类似于中点法, 直线斜率在 之间 由一个误差项符号决定下一个象素点。 由一个误差项符号决定下一个象素点。 算法原理: 算法原理:过各行各列象素中心构造一组虚 拟网格线。 拟网格线。按直线从起点到终点的顺序计算 直线与各垂直网格线的交点, 直线与各垂直网格线的交点,然后确定该列 象素中与此交点最近的象素。 象素中与此交点最近的象素。 巧妙之处在于采用增量计算, 巧妙之处在于采用增量计算,使得对于每一 只要检查一个误差项的符号, 列,只要检查一个误差项的符号,就可以确 定该列的所求象素。 定该列的所求象素。
像素; 像素; 当d>0时,M在L(Q点)上方,取P1为下一个 上方, 像素; 像素; 当d=0时,选P1或P2均可,约定取P1为下一 均可, 个像素; 个像素;
d=F(M)=F(xp+1,yp+0.5)=a(xp+1)+b(yp+0.5) +c 当d<0时,M在L(Q点)下方,取P2为下一个 下方,
举例: 方法扫描转换连接两点P0 举例:用DDA方法扫描转换连接两点 方法扫描转换连接两点 (0,0)和P1(5,2)的直线段。 ) ( )的直线段。 x int(y+0.5) y+0.5 0 0 0 1 0 0.4+0.5 2 1 0.8+0.5 3 1 1.2+0.5 4 2 1.6+0.5
四、Bresenham算法 Bresenham算法
中点画线法每步迭代涉及的象素和中点示意图
中点画线法的实现
过点(x 的直线段L的方程式为 过点 0,y0)、(x1, y1)的直线段 的方程式为 、 的直线段 的方程式为F(x, y)=ax+by+c=0,其中,a=y0-y1, b=x1-x0, ,其中, c=x0y1-x1y0,欲判断中点 在Q点的上方还是下 欲判断中点M在 点的上方还是下 只要把M代入 代入F( , ), ),并判断它的符号即 方,只要把 代入 (x,y),并判断它的符号即 可。
(1)如何计算偏差和辨别偏差: 如何计算偏差和辨别偏差: 如何计算偏差和辨别偏差
δ=tgβ-tgα 设 时 点在直线上, 方向一步; 有 1.δ=0时,点在直线上,走X 方向一步; 2.δ>0时,点在直线上方,也走 方向一步; 时 点在直线上方,也走X 方向一步; 3.δ<0时,点在直线下方,走Y 方向一步。 时 点在直线下方, 方向一步。
若当前像素处于d≥0情况,则取正右方像素 情况, 若当前像素处于 情况 P1(xp+1, yp),要判下一个像素位置,应计算 要判下一个像素位置, 要判下一个像素位置 d1=F(xp+2,yp+0.5)=a(xp+2)+b(yp+0.5)=d+a 增量为a。 增量为 。 若d<0时,则取右上方像素 2(xp+1, yp+1)。 时 则取右上方像素P 。 要判断再下一像素,则要计算d 要判断再下一像素,则要计算 2= F(xp+2, yp+1.5)=a(xp+2)+b(yp+1.5)+c=d+a+b ,增 量为a+ 。 量为 +b。 画线从(x 开始, 的初值 画线从 0, y0)开始,d的初值 d0=F(x0+1, 开始 y0+0.5)=F(x0, y0)+a+0.5b,因 F(x0, y0)=0, , 所以d 所以 0=a+0.5b。 。
第四章、基本图形生成算法 第四章、
教学目的: 教学目的: 1、知道图形生成中的基本问题; 、知道图形生成中的基本问题; 2、熟练掌握直线的扫描转换、圆与椭圆的 、熟练掌握直线的扫描转换、 扫描; 扫描; 3、掌握区域填充; 、掌握区域填充; 4、了解线宽与线型的处理。 、了解线宽与线型的处理。
在光栅显示器上显示的任何一种图形, 在光栅显示器上显示的任何一种图形,实 际上都是一些具有一种或多种颜色的象素 的集合。 的集合。 生成算法即图形设备生成图形的方法,也 生成算法即图形设备生成图形的方法, 即图形设备生成图形的方法 光栅化或或图形的扫描转换, 叫光栅化或或图形的扫描转换,是确定一 个象素集合及其颜色, 个象素集合及其颜色,用于显示一个图形 的过程。确定一个象素集合及其颜色, 的过程。确定一个象素集合及其颜色,用 于显示一个图形的过程,称为图形的扫描 于显示一个图形的过程, 转换或光栅化。 转换或光栅化。 对图形的扫描转换分为两部分:先确定像 对图形的扫描转换分为两部分: 素,再用图形的颜色或其他属性进行某种 写操作。 写操作。
(2)如何辨别绘制到终点以结束算法。 如何辨别绘制到终点以结束算法。 如何辨别绘制到终点以结束算法 可用计数器,值为MAX(∆X/△t,∆Y/△t),在计长 可用计数器,值为 △ △ 在计长 方向上每走一步计数器减1, 方向上每走一步计数器减 ,直到计数器值为零 则结束算法。 则结束算法。 时结束。 当MAX{|Xi-XA|,|Yi-YA|}≤ε时结束。 ,
4.规范坐标系 .
在通用图形软件包中使用的用来描述物体 数据所采用的坐标系。 数据所采用的坐标系。 目的是为了使通用图形软件包摆脱对具体 物理设备的依赖性, 物理设备的依赖性,也为了便于在不同应 用和不同系统之间交换图形信息。 用和不同系统之间交换图形信息。 坐标单位任意取,坐标取值范围是[ 坐标单位任意取,坐标取值范围是[0, 1]区间。 区间。 笛卡儿坐标系与屏幕坐标系的转换 屏幕( , ) ( 笛卡儿 最大分辨率/2, 笛卡儿+x最大分辨率 屏幕(x,y)=(x笛卡儿 最大分辨率 , y最大分辨率 y笛卡儿) 最大分辨率/2- 笛卡儿 笛Βιβλιοθήκη Baidu儿) 最大分辨率
二、中点画线算法
假定直线斜率k在 之间, 假定直线斜率 在0~1之间,当前像素点为 之间 ),则下一个像素点有两种可选择 (xp,yp),则下一个像素点有两种可选择 点P1(xp+1,yp)或P2(xp+1,yp+1)。 )。 的中点( 若P1与P2的中点(xp+1,yp+0.5)为M,Q ) , 为理想直线与x=xp+1垂线的交点。当M在 垂线的交点。 为理想直线与 垂线的交点 在 Q的下方时,则取 2应为下一个像素点; 的下方时, 的下方时 则取P 应为下一个像素点; 的上方时, 当M在Q的上方时,则取 1为下一个像素 在 的上方时 则取P 这就是中点画线法的基本原理。 点。这就是中点画线法的基本原理。
偏差计算
① 一般公式 线段终点为点A( ),画笔当前位置为点 线段终点为点 (xA, yA),画笔当前位置为点 ), M(xM,yM) ( )
d<0 : y=y+1, x=x d≥0 : x=x+1, y=y ∵ xM·xA>0(第一象限) (第一象限) ∴ FM=yMxA-yAxM
在逐点比较法法中要考虑的问题
二、笛卡尔坐标系和设备坐标系中 相关概念的区别
(1)像素点 )
·在几何学中,点没有准数,没有大小,只表示了在坐 在几何学中,点没有准数,没有大小, 在几何学中 标系统中的一个位置。 在图形系统中 在图形系统中, 标系统中的一个位置。·在图形系统中,点要由数值坐 标表示。如二维中的点( ),三维系统中的 标表示。如二维中的点(x,y),三维系统中的 ), )。其中 为实数。 (x,y,z)。其中 )。其中x,y,z为实数。 为实数 像素:像素即图像元素。 像素不是几何意义中的点, 像素:像素即图像元素。 像素不是几何意义中的点, 永远存在,只有颜色的变化。均匀地分布在显示表面。 永远存在,只有颜色的变化。均匀地分布在显示表面。 像素的坐标是整数值。 像素的坐标是整数值。 画点不是绘制点本身,而是将选择距该点最近的像素, 画点不是绘制点本身,而是将选择距该点最近的像素, 并赋一个颜色值。 并赋一个颜色值。 注意:点是实数世界中的信息;像素显示世界中的信息。 注意:点是实数世界中的信息;像素显示世界中的信息。
举例:用中点画线方法扫描转换连接两点 举例:用中点画线方法扫描转换连接两点P0 (0,0)和P1(5,2)的直线段。 ) )的直线段。 a=y0-y1=-2; b=x1-x0=5; d0=2*a+b=1;d1=2*a=-4;d2=2*(a+b)=6 , xy 00 10 21 31 42 d 1 -3 3 -1 5
绘图元素
构成图形的基本元素,主要有点、直线、圆和曲线等。 构成图形的基本元素,主要有点、直线、圆和曲线等。 图形元素包含的信息: 图形元素包含的信息:
① 图元的类型 ② 图元的几何信息 图元的非几何信息; ③ 图元的非几何信息; ④ 图元的指针信息
1、点 、 2、位置 、 3、像素 、 4、直线 、 5、曲线 、 6、填充 、
1、笛卡尔坐标系和设备坐标系中的区别 方向性、有限性、像素点、纵横比 方向性、有限性、像素点、 2、直线要直 设计算法时, 设计算法时,应选择最靠近直线的可寻址点来 逼近直线。 逼近直线。 直线的起点、 3、直线的起点、终点要准确 除了提高设备的精度外, 除了提高设备的精度外,也要从算法上保证绘 图的误差最小。 图的误差最小。 4、 直线的亮度和色泽要均匀 5、 画线速度要快