计算机图形学 - 第三章讲义
合集下载
计算机图形学第3章 基本图形生成算法
基函数(基本样条) 在局部参数区域分布 (支撑区间),因此 影响范围有限。
例题:有点P0(4,3);P1(6,5);P2(10,
6 );P3(12,4),用以上4点构造2次B样条曲线。
2.1.7 非均匀有理B样条
非均匀有理B样条NURBS(Non Uniform Rational BSpline);
3.2.2
Bresenham画圆法
该算法是最有效的算法之一。
不失一般性,假设圆心(xc,yc) ,圆上的点(x′,y′),则:
x' x xc
y ' y yc
圆心为原点,半径为R的位于第一象限1/8圆弧的画法,即(0, R)~( R , R )。
2 2
yi ), 思想:每一步都选择一个距离理想圆周最近的点P( xi , 使其误差项最小。
画其他曲线。
3.3
自由曲线的生成
正弦函数曲线
指数函数曲线
多项式函数曲线
自 由 曲 线
概率分布曲线及样条函数曲线
3.3.1 曲线的基本理论
基本概念
2.1.4
规则曲线:可用数学方程式表示出来的,如抛物 线等。
自由曲线:很难用一个数学方程式描述的,如高
速公路等。可通过曲线拟合(插值、逼近)的方法来
例题: 利用Bresenham算法生成P (0,0)到Q(6,5)的直 线所经过的像素点。要求先 列出计算式算出各点的坐标 值,然后在方格中标出各点。
(1,1)
3.1.5 双步画线法 原理
模式1:当右像素位于右下角时,中间像素位于底线 模式4:当右边像素位右上角时,中间像素位于中线 模式2和模式3:当右像素位于中线时,中间像素可能位于底线 上,也可能位于中线上,分别对应于模式2和模式3,需进一步 判断。 当0≤k≤1/2时,模式4不可能出现,当1/2≤k≤1时,模式1不 可能出现。
例题:有点P0(4,3);P1(6,5);P2(10,
6 );P3(12,4),用以上4点构造2次B样条曲线。
2.1.7 非均匀有理B样条
非均匀有理B样条NURBS(Non Uniform Rational BSpline);
3.2.2
Bresenham画圆法
该算法是最有效的算法之一。
不失一般性,假设圆心(xc,yc) ,圆上的点(x′,y′),则:
x' x xc
y ' y yc
圆心为原点,半径为R的位于第一象限1/8圆弧的画法,即(0, R)~( R , R )。
2 2
yi ), 思想:每一步都选择一个距离理想圆周最近的点P( xi , 使其误差项最小。
画其他曲线。
3.3
自由曲线的生成
正弦函数曲线
指数函数曲线
多项式函数曲线
自 由 曲 线
概率分布曲线及样条函数曲线
3.3.1 曲线的基本理论
基本概念
2.1.4
规则曲线:可用数学方程式表示出来的,如抛物 线等。
自由曲线:很难用一个数学方程式描述的,如高
速公路等。可通过曲线拟合(插值、逼近)的方法来
例题: 利用Bresenham算法生成P (0,0)到Q(6,5)的直 线所经过的像素点。要求先 列出计算式算出各点的坐标 值,然后在方格中标出各点。
(1,1)
3.1.5 双步画线法 原理
模式1:当右像素位于右下角时,中间像素位于底线 模式4:当右边像素位右上角时,中间像素位于中线 模式2和模式3:当右像素位于中线时,中间像素可能位于底线 上,也可能位于中线上,分别对应于模式2和模式3,需进一步 判断。 当0≤k≤1/2时,模式4不可能出现,当1/2≤k≤1时,模式1不 可能出现。
计算机图形学_完整版 ppt课件
三维观察设备 虚拟现实系统的输出显示设备 ……
输入设备
键盘、鼠标 按钮盒、旋钮 跟踪球、空间球 操作杆 触觉反馈设备 数据手套、数据衣 数字化仪 扫描仪 触摸板 光笔 ……
硬拷贝设备
打印机 喷墨 激光 ……
绘图仪 台式 大型滚动传送式 ……
图形硬件系统组成模块示意图:
或称图形坐标系、用户坐标系、全局坐标系 如在世界坐标系中进行装配
观察坐标系(viewing coordinate)
对场景进行观察所对应的坐标系 对象经变换到该场景的一个二维投影——投影变换
规范化坐标系(normalized coordinate)
可使图形软件与特定输出设备的坐标范围无关 坐标范围:-1~1,或0 ~ 1 等等
在场景中对物体移动、旋转、缩 放、扭曲等,或转换模型坐标系
3D→2D,并对观察区域进行裁 剪和缩放
一种伪变换,对窗口上的最终输 出进行移动、缩放等
三维几何变换
可用4×4矩阵操作统一表示二维和三维几何变换
缩放、旋转、 对称、错切等
平移
投影
整体缩放
基本变换:平移、旋转、缩放
复合变换:可由平移、旋转、缩放和其他变换的矩阵乘积 (合并)形成。
图元的绘制、显示过程
顶点 法向量、颜色、纹理… 像素
图元操作、像素操作 光栅化(扫描转换)
像素信息 帧缓存 显示器
调用底层函数,如 setPixel (x,y);将当 前像素颜色设定值存 入帧缓存的整数坐标 位置(x,y)处。
图元描述与操作
几何图元由一组顶点(Vertex)描述 这一组顶点可以是一个或是多个。每个顶点信息二维或 三维,使用 2~4 个坐标。顶点信息由位置坐标、颜色 值、法向量、纹理坐标等组成。
输入设备
键盘、鼠标 按钮盒、旋钮 跟踪球、空间球 操作杆 触觉反馈设备 数据手套、数据衣 数字化仪 扫描仪 触摸板 光笔 ……
硬拷贝设备
打印机 喷墨 激光 ……
绘图仪 台式 大型滚动传送式 ……
图形硬件系统组成模块示意图:
或称图形坐标系、用户坐标系、全局坐标系 如在世界坐标系中进行装配
观察坐标系(viewing coordinate)
对场景进行观察所对应的坐标系 对象经变换到该场景的一个二维投影——投影变换
规范化坐标系(normalized coordinate)
可使图形软件与特定输出设备的坐标范围无关 坐标范围:-1~1,或0 ~ 1 等等
在场景中对物体移动、旋转、缩 放、扭曲等,或转换模型坐标系
3D→2D,并对观察区域进行裁 剪和缩放
一种伪变换,对窗口上的最终输 出进行移动、缩放等
三维几何变换
可用4×4矩阵操作统一表示二维和三维几何变换
缩放、旋转、 对称、错切等
平移
投影
整体缩放
基本变换:平移、旋转、缩放
复合变换:可由平移、旋转、缩放和其他变换的矩阵乘积 (合并)形成。
图元的绘制、显示过程
顶点 法向量、颜色、纹理… 像素
图元操作、像素操作 光栅化(扫描转换)
像素信息 帧缓存 显示器
调用底层函数,如 setPixel (x,y);将当 前像素颜色设定值存 入帧缓存的整数坐标 位置(x,y)处。
图元描述与操作
几何图元由一组顶点(Vertex)描述 这一组顶点可以是一个或是多个。每个顶点信息二维或 三维,使用 2~4 个坐标。顶点信息由位置坐标、颜色 值、法向量、纹理坐标等组成。
第3章 图形的基本算法
dy s t 2 ( x i 1 1) 2 y i 1 1 dx
dx(s t ) 2( xi 1 dy y i 1 dx) 2dy dx
因dx>0,所以我们可以以dx(s-t) 的正负作 为选择点的依据。若令其为di,则
d i 2( xi 1 dy y i 1 dx) 2dy dx
若s<t,则Si较靠近理论直线,应选Si,y 不变; 若s>t,则Ti较靠近理论直线,应选Ti,y 增1。 现在需要一个判别式,来判断每一步是选 Ti还是选Si。下面导出Bresenham 算法的 判别式。
判别式的导出
设一直线段由(x1,y1)至(x2,y2),(其中 y2>y1,x2>x1)则直线方程可表示为
怎样选择直线的最佳光栅位置(象素点), 是Bresenham 算法追求的目标。为此,算 法根据直线的斜率在计长方向(x或y)上, 每次都递增一个单位步长即一个象素单位, 另一个方向的增量为0或1。这种算法的巧 妙之处是只需检查判别式的符号即可,而 且计算量很小,只进行整型数计算,不必 做舍入操作。
直线的近似表示
第三章 图形的基本算法
本章内容
3.1 图形的表示 3.2 图形模式与坐标系 3.3 直线的扫描转换 3.4 圆的生成算法 3.5 多边形的填充
3.1 图形的表示
计算机图形学是一门复杂而又多样化的技 术。要想了解这项技术必须把它分成几个 易于操作的部分。图形是计算机图形学的 关键概念,处理图形我们应考虑以下问题: 1. 如何在计算机中表示图形? 2. 如何准备图形的数据? 3. 如何显示准备好的图形? 4. 如何实现人与图形的交互?
这里,图形是一个广义的概念,凡是可 以在图形设备上输出的点、线、文本等 的集合都可以称为是图形。
计算机图形学讲稿
计算机动画的应用领域非常广,最典型的有: 1、计算机模拟飞行 2、动画片 3、电视广告
第二章 计算机图形系统及其设备
本章内容:介绍计算机图形系统的组成以及主要的图形外部设备。 2.1 计算机图形显示原理
阴极射线管(CRT)显示器的特点:亮度高,对比度好,分辨率高和色彩
鲜艳并丰富。缺点是体积大、厚与笨重。 液晶显示器的特点:器件薄,面积可大可小,重量轻,特别适合便携式计 算机使用,缺点是分辨率相对较低,色彩不够鲜艳,且价格偏高。 2.1.1 CRT显示器
SVGA 1024×768 PGA 1024×768ຫໍສະໝຸດ AVGA 1280×1024
PC显示适配器的发展 (2)显示适配器的结构
ROM BIOS
主板
显示控制器
显示器
显示存储器
•显示存储器 存储显示图像的点阵数据。每个象点对应1-3个字节(由颜色深度决定),屏 幕上有多少个象点(由分辨率决定)就要有多少个这样的字节,从而可以估 算出应有的显示存储器的基本容量。 •显示控制器 是显示适配器的心脏。其功能包括: ①管理与系统总线的接口 ②读取显示存储器中的图像点阵,通过转换后送至显示器 ③调色板功能,增加同屏显示颜色数目 ④先进的显示控制器具有图形加速功能,包括位和块传送、画线、填充和颜 色扩展。 •ROMBIOS 含有少量的固化软件,用于支持显示控制器建立所要求的显示环境。主要用 于DOS操作系统。在Windows 95或者Windows NT的环境下,它的大部分功能是 不被使用的。
1.3 场景绘制
•取景变换
将几何对象的三维坐标转换到屏幕上的象素位置,需要进行一系列的坐标变 换,这些变化统称为取景变换。
•删除隐藏面
背向视点的面被正面遮挡,需要及早删除。目的是为了减少图形绘制的工作 量,提高场景动态显示的实时性。
第二章 计算机图形系统及其设备
本章内容:介绍计算机图形系统的组成以及主要的图形外部设备。 2.1 计算机图形显示原理
阴极射线管(CRT)显示器的特点:亮度高,对比度好,分辨率高和色彩
鲜艳并丰富。缺点是体积大、厚与笨重。 液晶显示器的特点:器件薄,面积可大可小,重量轻,特别适合便携式计 算机使用,缺点是分辨率相对较低,色彩不够鲜艳,且价格偏高。 2.1.1 CRT显示器
SVGA 1024×768 PGA 1024×768ຫໍສະໝຸດ AVGA 1280×1024
PC显示适配器的发展 (2)显示适配器的结构
ROM BIOS
主板
显示控制器
显示器
显示存储器
•显示存储器 存储显示图像的点阵数据。每个象点对应1-3个字节(由颜色深度决定),屏 幕上有多少个象点(由分辨率决定)就要有多少个这样的字节,从而可以估 算出应有的显示存储器的基本容量。 •显示控制器 是显示适配器的心脏。其功能包括: ①管理与系统总线的接口 ②读取显示存储器中的图像点阵,通过转换后送至显示器 ③调色板功能,增加同屏显示颜色数目 ④先进的显示控制器具有图形加速功能,包括位和块传送、画线、填充和颜 色扩展。 •ROMBIOS 含有少量的固化软件,用于支持显示控制器建立所要求的显示环境。主要用 于DOS操作系统。在Windows 95或者Windows NT的环境下,它的大部分功能是 不被使用的。
1.3 场景绘制
•取景变换
将几何对象的三维坐标转换到屏幕上的象素位置,需要进行一系列的坐标变 换,这些变化统称为取景变换。
•删除隐藏面
背向视点的面被正面遮挡,需要及早删除。目的是为了减少图形绘制的工作 量,提高场景动态显示的实时性。
计算机图形学_第三章-6(求交分类)
3.3.3
基本的求交算法
• 3.3.3.1 线与线的求交计算
– 二次曲线与二次曲线的求交。
• 求交策略是将坐标系变换到该圆锥曲线的局部坐标 系下,一个圆锥曲线用隐式方程的形式表示,而另 一圆锥曲线采用参数方程的形式,代入即可获得有 关参数的四次方程,,因而可计算出二者的交点。
– 二次曲线与NURBS曲线求交
• 1.初始化。依据离散精度,将NURBS曲线离散成 二叉树的形式
清华大学计算机科学与技术系 计算机图形学基础
• 2.求初始交点。遍历该二叉树和四叉树,如果 曲线二叉树叶子结点的包围盒与曲面四叉树的叶 子结点的包围盒有交点,则将子曲线段中点的参 数值、子曲面片的中心点的坐标值与参数值作为 初始交点,记录到初始交点点列中去。 • 3.对初始交点进行迭代,形成精确交点。可用 牛顿迭代法求解精确交点。设NURBS曲线为C(t), NURBS曲面为S(u,v),则在交点处应满足: C(t)-S(u,v)=0 设 f(u,v,t)=C(t)-S(u,v)
– 代数法的弱点是对误差很敏感
• 这是因为代数法经常需要判别某些量是否大于零、 等于零或小于零,而在计算机中的浮点数近似表 示的误差常常会使这种判别出现错误。
清华大学计算机科学与技术系
计算机图形学基础
• 2.几何方法
– 利用几何的方法,对参与求交的曲面的形状 大小、相互位置以及方向等进行计算和判断, 识别出交线的形状和类型,从而可精确求出 交线。 – 几何求交适应性不是很广,一般仅用于平面 以及二次曲面等简单曲面的求交
清华大学计算机科学与技术系 计算机图形学基础
• 4.跟踪方法
– 通过先求出初始交点,然后从已知的初始交 点出发,相继跟踪计算出下一交点,从而求 出整条交线的方法。 – 跟踪法的本质是构造交线满足的微分方程组, 先求出满足方程组的某个某个初值解,通过 数值求解微分方程组的方法来计算整个交线。 – 跟踪方法在计算相继交点的时候,利用了曲 面的局部微分性质,一般采用数值迭代的方 法求解,使得计算效率较高。
计算机图形学(1-3章讲义汇总整理)
图形显示系统
图形显示系统是计算机图形处理系统中极其重要的部分。图形显示系统负责实时显示图 形处理的中间或最终结果,为用户提供可视的工作界面等。PC 机的图形显示系统逻辑上是 由监视器(Monitor,又称显示器)和显示卡(又称显示适配器)两大部分组成。目前显示器中主 要包括阴极射线管(CRT),液晶显示器(LCD)和等离子显示器(PDP)。
图形输入板与坐标数字化仪
图形输入板与坐标数字化仪两者的工作原理与功能完全相同,它们都是将图形转变成计 算机能接收的数字量的专用设备。它们按工作原理的不同分为电磁式、超声波式、电位梯度 式、机械式等多种。数字化仪往往具在定位、拾取、选择的功能,其主要性能指标有分辨率、 精度和幅面。许多数字化仪提供多种压感。现在非常流行的汉字手写系统就是一种数字化仪。
光笔
光笔是一种手持检测光的装置,它直接在屏幕上操作,拾取位置。光笔原理简单,操作 直观,但荧光屏的分辨率、电子束扫描速度、荧光粉的特性、笔尖与荧光粉的距离和角度等 诸多因素都会影响光笔的分辨率与灵敏度。另外,光笔对于荧光屏上不发光的区域无法检测, 也不能用于液晶、等离子体等类型的显示器。
触摸屏
触摸屏利用手指等对屏幕的触摸位置进行定位。按工作原理可以分为:电阻式、电容式、 红外线式和声波表面波式。
计算机图形学的研究内容 计算机图形学的定义
计算机图形学是利用计算机来建立、处理、传输和存储从某个客观对象抽象得到的几何 和物理模型,并根据模型产生该对象图形输出的有关理论、方法和技术。1982 年,国际标 准化组织 ISO 将计算机图形学定义为:研究用计算机进行数据和图形之间相互转换的方法和 技术。
CRT 显示器
CRT 显示器由于分辨率和可靠性高、速度快、成本低等优点,多年来一直是图形显示系 统中最重要的设备。CRT 显示器的工作方式分为随机扫描和光栅扫描两种方式,目前以光栅 扫描方式为主,这是因为,虽然随机扫描图形显示器具有画线速度快、分辨率高等优点,但 难以生成具有多种灰度和颜色且色调能连续变化的图形,而光栅扫描图形显示器却可以生成 有高度真实感的图形,因而已成为 PC 机和 Macintosh 计算机以及各种工作站所使用的最重 要的信息显示设备。
图形显示系统是计算机图形处理系统中极其重要的部分。图形显示系统负责实时显示图 形处理的中间或最终结果,为用户提供可视的工作界面等。PC 机的图形显示系统逻辑上是 由监视器(Monitor,又称显示器)和显示卡(又称显示适配器)两大部分组成。目前显示器中主 要包括阴极射线管(CRT),液晶显示器(LCD)和等离子显示器(PDP)。
图形输入板与坐标数字化仪
图形输入板与坐标数字化仪两者的工作原理与功能完全相同,它们都是将图形转变成计 算机能接收的数字量的专用设备。它们按工作原理的不同分为电磁式、超声波式、电位梯度 式、机械式等多种。数字化仪往往具在定位、拾取、选择的功能,其主要性能指标有分辨率、 精度和幅面。许多数字化仪提供多种压感。现在非常流行的汉字手写系统就是一种数字化仪。
光笔
光笔是一种手持检测光的装置,它直接在屏幕上操作,拾取位置。光笔原理简单,操作 直观,但荧光屏的分辨率、电子束扫描速度、荧光粉的特性、笔尖与荧光粉的距离和角度等 诸多因素都会影响光笔的分辨率与灵敏度。另外,光笔对于荧光屏上不发光的区域无法检测, 也不能用于液晶、等离子体等类型的显示器。
触摸屏
触摸屏利用手指等对屏幕的触摸位置进行定位。按工作原理可以分为:电阻式、电容式、 红外线式和声波表面波式。
计算机图形学的研究内容 计算机图形学的定义
计算机图形学是利用计算机来建立、处理、传输和存储从某个客观对象抽象得到的几何 和物理模型,并根据模型产生该对象图形输出的有关理论、方法和技术。1982 年,国际标 准化组织 ISO 将计算机图形学定义为:研究用计算机进行数据和图形之间相互转换的方法和 技术。
CRT 显示器
CRT 显示器由于分辨率和可靠性高、速度快、成本低等优点,多年来一直是图形显示系 统中最重要的设备。CRT 显示器的工作方式分为随机扫描和光栅扫描两种方式,目前以光栅 扫描方式为主,这是因为,虽然随机扫描图形显示器具有画线速度快、分辨率高等优点,但 难以生成具有多种灰度和颜色且色调能连续变化的图形,而光栅扫描图形显示器却可以生成 有高度真实感的图形,因而已成为 PC 机和 Macintosh 计算机以及各种工作站所使用的最重 要的信息显示设备。
计算机图形学-第三章-变换及裁剪
xh hx, yh hy, h 0
(x,y)点对应的齐次坐标为三维空间的一条 直线
xh hx
yh
hy
zh h
7
齐次坐标的作用
1. 将各种变换用阶数统一的矩阵来表示。提供了用矩阵 运算把二维、三维甚至高维空间上的一个点从一个坐 标系变换到另一坐标系的有效方法。
2. 便于表示无穷远点。
例如:(x h, y h, h),令h等于0
25
3 规格化设备坐标系 用于用户的图形是定义在用户坐标系里,
而图形的输出定义在设备坐标系里,它依赖于 基体的图形设备。由于不同的图形设备有不同 的设备坐标系,且不同设备间坐标范围也不尽 相同, 例如:分辨率为1024*768的显示器其屏幕坐标的 范围:x方向为0~1023,y方向为0~767,分辨 率为640*480的显示器,其屏幕坐标范围为:x 方向0~639,y方向0~479
y 1),则
1 0 0
P'x' y' 1 x y 1 0 1 0 x
Tx1
Ty1
1
y 1Tt1
经第二次平移变换后的坐标为P*(x* y* 1)
P * x *
y * 1 x'
y'
1
1 0
0 0 1 0
Tx
2
Ty 2
1
1 0 0 1 0 0
x y 1 0 1 0 0 1 0 x y 1 Tt1Tt2
44
关于透视投影
一点透视投影
两点透视投影
三点透视投影
45
内容
二维变换 三维变换 裁剪
二维线裁剪 二维多边形裁剪 文本裁剪 三维裁剪 关于三维变换与裁剪
46
三维变换流程图
(x,y)点对应的齐次坐标为三维空间的一条 直线
xh hx
yh
hy
zh h
7
齐次坐标的作用
1. 将各种变换用阶数统一的矩阵来表示。提供了用矩阵 运算把二维、三维甚至高维空间上的一个点从一个坐 标系变换到另一坐标系的有效方法。
2. 便于表示无穷远点。
例如:(x h, y h, h),令h等于0
25
3 规格化设备坐标系 用于用户的图形是定义在用户坐标系里,
而图形的输出定义在设备坐标系里,它依赖于 基体的图形设备。由于不同的图形设备有不同 的设备坐标系,且不同设备间坐标范围也不尽 相同, 例如:分辨率为1024*768的显示器其屏幕坐标的 范围:x方向为0~1023,y方向为0~767,分辨 率为640*480的显示器,其屏幕坐标范围为:x 方向0~639,y方向0~479
y 1),则
1 0 0
P'x' y' 1 x y 1 0 1 0 x
Tx1
Ty1
1
y 1Tt1
经第二次平移变换后的坐标为P*(x* y* 1)
P * x *
y * 1 x'
y'
1
1 0
0 0 1 0
Tx
2
Ty 2
1
1 0 0 1 0 0
x y 1 0 1 0 0 1 0 x y 1 Tt1Tt2
44
关于透视投影
一点透视投影
两点透视投影
三点透视投影
45
内容
二维变换 三维变换 裁剪
二维线裁剪 二维多边形裁剪 文本裁剪 三维裁剪 关于三维变换与裁剪
46
三维变换流程图
计算机图形学第3章
第3章 基本图形 生成算法
第3章 基本图形生成算法
3.1 生成直线的常用算法
均假定所画直线的斜率k∈[0,1]。
3.1.1 DDA画线算法
DDA(Digital Differential Analyzer)画线 算法也称数值微分法,是一种增量算法。它的算 法实质是用数值方法解微分方程,通过同时对x和 y各增加一个小增量,计算下一步的x、y值。
边界表示的四连通区域种子填充算法 内点表示的四连通区域种子填充算法 边界表示的八连通区域种子填充算法 内点表示的八连通区域种子填充算法
第3章 基本图形生成算法
1.边界表示的四连通区域种子填充算法
基本思想:从多边形内部任一点(像素)出发,依“左 上右下”顺序判断相邻像素,若其不是边界像素且没有被填 充过,对其填充,并重复上述过程,直到所有像素填充完毕。 可以使用栈结构来实现该算法,算法的执行步骤如下: 种子像素入栈,当栈非空时,重复执行如下三步操作: (1)栈顶像素出栈; (2)将出栈像素置成多边形填充的颜色; (3)按左、上、右、下的顺序检查与出栈像素相邻的 四个像素,若其中某个像素不在边界上且未置成多边形色, 则把该像素入栈。
过各行各列像素中心构造一组虚拟网格线,按直 线从起点到终点的顺序计算直线与各垂直网格线的交 点,然后确定该列像素中与此交点最近的像素。 由图3-5不难看出:若s<t, 则Si比较靠近理想直线,应 选Si;若s≥t,则Ti比较靠近 理想直线,应选Ti。
第3章 基本图形生成算法
令dx=x2-x1,dy=y2-y1 递推公式 :di 1 di 2dy 2dx( yi yi 1 ) di的初值: d1 2dy dx 当di≥0时,选Ti,
第3章 基本图形生成算法
第3章 基本图形生成算法
3.1 生成直线的常用算法
均假定所画直线的斜率k∈[0,1]。
3.1.1 DDA画线算法
DDA(Digital Differential Analyzer)画线 算法也称数值微分法,是一种增量算法。它的算 法实质是用数值方法解微分方程,通过同时对x和 y各增加一个小增量,计算下一步的x、y值。
边界表示的四连通区域种子填充算法 内点表示的四连通区域种子填充算法 边界表示的八连通区域种子填充算法 内点表示的八连通区域种子填充算法
第3章 基本图形生成算法
1.边界表示的四连通区域种子填充算法
基本思想:从多边形内部任一点(像素)出发,依“左 上右下”顺序判断相邻像素,若其不是边界像素且没有被填 充过,对其填充,并重复上述过程,直到所有像素填充完毕。 可以使用栈结构来实现该算法,算法的执行步骤如下: 种子像素入栈,当栈非空时,重复执行如下三步操作: (1)栈顶像素出栈; (2)将出栈像素置成多边形填充的颜色; (3)按左、上、右、下的顺序检查与出栈像素相邻的 四个像素,若其中某个像素不在边界上且未置成多边形色, 则把该像素入栈。
过各行各列像素中心构造一组虚拟网格线,按直 线从起点到终点的顺序计算直线与各垂直网格线的交 点,然后确定该列像素中与此交点最近的像素。 由图3-5不难看出:若s<t, 则Si比较靠近理想直线,应 选Si;若s≥t,则Ti比较靠近 理想直线,应选Ti。
第3章 基本图形生成算法
令dx=x2-x1,dy=y2-y1 递推公式 :di 1 di 2dy 2dx( yi yi 1 ) di的初值: d1 2dy dx 当di≥0时,选Ti,
第3章 基本图形生成算法
计算机图形学第3章二维基本图(4)
二、扫描线种子填充算法实现
借助于堆栈,上述算法实现步骤如下:
1、初始化堆栈。 2、种子压入堆栈。 3、while(堆栈非空) { (1)从堆栈弹出种子象素。 (2)如果种子象素尚未填充,则:
a.求出种子区段:xleft、xright; b.填充整个区段。 c.检查相邻的上扫描线的xleft≤x≤xright区间内, 是否存在需要填充的新区段,如果存在的话, 则把每个新区段在xleft≤x≤xright范围内的最 右边的象素,作为新的种子象素依次压入堆栈。 d.检查相邻的下扫描线的xleft≤x≤xright区间内, 是否存在需要填充的新区段,如果存在的话, 则把每个新区段在 xleft≤x≤xright范围内的 最右边的象素,作为新的种子象素依次压入堆 栈。 }
扫描线种子填充算法步骤 (1)种子象素入栈。 (2)栈非空时象素出栈,否则结束。 (3)对出栈象素及左、右两边象素填充,直到遇边界XL、XR。 (4)在(XL ,XR) 内查相临的上、下两条扫描线是否为边界或已填充, 如不是,则将每区间的最右边的象素入栈。回到(2)。
练习: 用扫描线种子填充算法,写出图中顺序进栈的种子坐标及 所需最大栈空间
2、国标码 我国除了采用ASCII码外,还制定了汉字编 码的国家标准字符集:中华人民共和国国家标准 信息交换编码,代号为“GB2312-80”。该字符 集共收录常用汉字6763个,图形符号682个。 它规定所有汉字和图形符号组成一个94×94 的矩阵,在此方阵中,每一行称为“区”,用区 码来标识;每一列称为“位”,用位码来标识, 一个符号由一个区码和一个位码共同标识。 区码和位码分别需要7个二进制位,同样, 为了方便,各采用一个字节表示。所以在计算机 中,汉字(符号)国标码占用两个字节。
计算机图形学完整课件
x y =(a·x1+b·y1+c)+a+0.5·b
=F(x1,y1)+a+10.5·b 1
x y 但由于(x1,y1)在直线上,故F(x1,y1)=0。
因此d的初始值1 为d0=a+0.5·b 1
由于我们使用的只是d的符号,而且d的增量都是整数,只是其初 始值包含小数。因此,我们可以用2d代替d,来摆脱小数,写出仅包 含整数运算的算法:
当d<0时,M在直线下方(即在Q的下 方),故应取右上方的p2作为下一个象 素。
当d>0,则应取正右方的p1。
当d=0是,二者一样合适,可以随便取一 个。
我们约定取正右方的p1。 对 每一个象素计算判别式d,根据它 的符号确定下一象素。由于d是xp 和yp的线性函数,可采用增量计算 ,以便提高运算效率。
对于直线上的点F(x,y)=0; 对于直线上方的点F(x,y)>0; 对于直线下方的点F(x,y)<0。 因此,欲判前述Q在M的上方还是下方,只要把M代入F(x,y), 并判断它的符号。构造判别式
d=F(M)=F( , )=a( )+b( )+c
xp 1 yp 0.5
xp 1
yp 0.5
必须寻找只需做一些简单的 整数运算和判别运算的方 法即可确定圆上的象素点的算法。
考虑到圆的对称性可 以减少计算量。只要 能生成8分圆,那么圆 的其它部分可以通过 一系列的简单映射变 换得到。如图所示, 假设已知一个圆心在 原点的圆上一点(x,y),
(x, y)
( y, x)
(x, y)
(y, x)
( y, x)
( x, y)
( y,x)
( x, y)
=F(x1,y1)+a+10.5·b 1
x y 但由于(x1,y1)在直线上,故F(x1,y1)=0。
因此d的初始值1 为d0=a+0.5·b 1
由于我们使用的只是d的符号,而且d的增量都是整数,只是其初 始值包含小数。因此,我们可以用2d代替d,来摆脱小数,写出仅包 含整数运算的算法:
当d<0时,M在直线下方(即在Q的下 方),故应取右上方的p2作为下一个象 素。
当d>0,则应取正右方的p1。
当d=0是,二者一样合适,可以随便取一 个。
我们约定取正右方的p1。 对 每一个象素计算判别式d,根据它 的符号确定下一象素。由于d是xp 和yp的线性函数,可采用增量计算 ,以便提高运算效率。
对于直线上的点F(x,y)=0; 对于直线上方的点F(x,y)>0; 对于直线下方的点F(x,y)<0。 因此,欲判前述Q在M的上方还是下方,只要把M代入F(x,y), 并判断它的符号。构造判别式
d=F(M)=F( , )=a( )+b( )+c
xp 1 yp 0.5
xp 1
yp 0.5
必须寻找只需做一些简单的 整数运算和判别运算的方 法即可确定圆上的象素点的算法。
考虑到圆的对称性可 以减少计算量。只要 能生成8分圆,那么圆 的其它部分可以通过 一系列的简单映射变 换得到。如图所示, 假设已知一个圆心在 原点的圆上一点(x,y),
(x, y)
( y, x)
(x, y)
(y, x)
( y, x)
( x, y)
( y,x)
( x, y)
计算机图形学第三章
void Bresenhamline (int x0,int y0,int x1, int y1,int color) { int x, y, dx, dy; float k, e; dx = x1-x0, dy = y1- y0, k=dy/dx; e=-0.5, x=x0, y=y0; for (i=0; idx; i++) { drawpixel (x, y, color); x=x+1,e=e+k; if (e0) { y++, e=e-1;} } }
设备级显示算法,考虑运算方式、时间、 次数等细节。
扫描转换直线段
直线的绘制要求:
1.直线要直; 2.直线上的点要准确,即无不定向性和断裂情况; 3.直线的亮度、色泽要均匀; 4.画线的速度要快; 5.要求不同直线可具有不同的色泽、亮度、线型等。
扫描转换直线段
直线基础
我们知道:直线的笛卡儿斜率截距方程为:y=m•x+b
过各行各列象素中心构造一组虚拟网格线。按直线 从起点到终点的顺序计算直线与各垂直网格线的交 点,然后根据误差项的符号确定该列象素中与此交 点最近的象素。
d d d
d
yi 1 yi k ( xi 1 xi ) yi k 设直线方程为: ,其中k=dy/dx。 因为直线的起始点在象素中心,所以误差 项d的初值d0=0。 X下标每增加1,d的值相应递增直线的斜率值k,即d=d+k。 一旦d≥1,就把它减去1,这样保证d在0、1之间。 当d≥0.5时,最接近于当前象素的右上方象素 xi 1 , yi 1 ( ) xi 1 , yi 而当d<0.5时,更接近于右方象素( )。 为方便计算,令e=d-0.5, e的初值为-0.5,增量为k。 当e≥0时,取当前象素(xi,yi)的右上方象素 ( ); xi 1 , yi 1 而当e<0时,更接近于右方象素( xi 1 , yi )。
05 C3 计算机图形学基础.ppt共32页PPT资料
B-spline曲线可克服上述问题
控制点移动时只会影响部分的曲线.
其次数与控制点数目无关,可由使用者任意选择,B-spline比 Bezier有更多的弹性
2019/10/22
上理机械 吴恩启
15
B样条曲线
数学表达:
可进行局部修改,曲线更逼近特征多边形,曲线的阶次和特 征多边形的顶点无关。
5.Transform of 3D graphics
6.Projection transform of 3D graphics
7.Free form curve and surface
2019/10/22
上理机械 吴恩启
2
3.7 free-form curve and surface
自由曲线和自由曲面:
上理机械 吴恩启
10
Hermite曲线
Hermite曲线又称为Ferguson曲线 在早期的曲面设计中得到了应用。但它有许多缺点:
设计条件与曲线始末两点的切矢大小和方向有关,设计 时不易控制;
如果定义高次 Ferguson曲线,需要用到曲线始末两点的 高阶导数。
为此人们在Ferguson数学模型上作了一些改进,得到另外 形式的曲线。 Bezier曲线就是其中一种
2019/10/22
上理机械 吴恩启
18
3.7 free-form curve and surface
曲线生成与编辑-以sw为例
草图中的样条曲线(SPLINE) 投影曲线、分割曲线、螺旋线与涡状线、组合曲线
曲面生成和编辑-以sw为例
拉伸、旋转、扫描、放样、延展、(网格、点云拟合) 圆角、等距、延伸、剪裁、填充、缝合、移动/复制/删
控制点移动时只会影响部分的曲线.
其次数与控制点数目无关,可由使用者任意选择,B-spline比 Bezier有更多的弹性
2019/10/22
上理机械 吴恩启
15
B样条曲线
数学表达:
可进行局部修改,曲线更逼近特征多边形,曲线的阶次和特 征多边形的顶点无关。
5.Transform of 3D graphics
6.Projection transform of 3D graphics
7.Free form curve and surface
2019/10/22
上理机械 吴恩启
2
3.7 free-form curve and surface
自由曲线和自由曲面:
上理机械 吴恩启
10
Hermite曲线
Hermite曲线又称为Ferguson曲线 在早期的曲面设计中得到了应用。但它有许多缺点:
设计条件与曲线始末两点的切矢大小和方向有关,设计 时不易控制;
如果定义高次 Ferguson曲线,需要用到曲线始末两点的 高阶导数。
为此人们在Ferguson数学模型上作了一些改进,得到另外 形式的曲线。 Bezier曲线就是其中一种
2019/10/22
上理机械 吴恩启
18
3.7 free-form curve and surface
曲线生成与编辑-以sw为例
草图中的样条曲线(SPLINE) 投影曲线、分割曲线、螺旋线与涡状线、组合曲线
曲面生成和编辑-以sw为例
拉伸、旋转、扫描、放样、延展、(网格、点云拟合) 圆角、等距、延伸、剪裁、填充、缝合、移动/复制/删
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
思想 算法公式推导 算法描述 举例
h
27
Bresenham 算法思想
思想:只用整数计算寻找最接近实际直线的整数坐标
y=mx+
13
b
12
11
10
10 11 12 13 14 15 16
从(10,10)像素开始,绘制h 0<m<1直线的屏幕网格28
Bresenham 算法思想
y
yk+h
8
3.2 画线算法
问题 画线算法
➢ DDA算法 ➢ Bresenham算法
h
9
3.2 画线算法
问题 已知直线的两个端点P1(x1, y1),P2(x2, y2) 求直线的中间各点
h
10
3.2 画线算法
已知:P1(x1,y1),P2(x2,y2) 直线的笛卡尔斜率截距方程
y += yIncrement;
setpixel(Round(x), Round(y), RED);
}
}
h
25
DDA算法 评价
比直接使用公式 y=m*x+b快 ,没有 用乘法
运算仍然耗时
➢ 设置增量的除法运算 ➢ 取整操作 ➢ 浮点
较长线段的误差积累
h
26
2. Bresenham算法
由Bresenham提出的一种精确而有效的光 栅线段生成算法,可用于直线、圆(圆弧)和 其它曲线的生成
像素点
(20, 10)
(20, 10)
0
(21,10.8) (21,11)
1
(22,11.6) (22,12)
2
(23,12.4) (23,12)
3
(24,13.2) (24,13)
4
(25, 14)
(25, 14)
5
(26,14.8) (26,15)
6
(27,15.6) (27,16)
7
(28,16.4) (28,16)
y
|m| <1
y2
y1
x1
h
x2 x
16
DDA算法公式
直线斜率满足|m|<1时,取x方向为 单位步长
递推公式为: xk+1=xk1 yk+1=ykm
h
17
求直线中间各个像素点-沿y轴取样
y |m|>1
y2
y1
h
18
x1
x2 x
DDA算法公式
直线斜率满足|m|>1时,取y 方向为单位步长
递推公式为: yk+1=yk1 xk+1=xk1/m
h
5
直线的绘制
光栅扫描系统 ➢ 屏幕位置以整数值表示; ➢ 以线路径上的离散点来显示线段 ➢ 显示的线段具有阶梯效果
h
6
直线的绘制
计算机绘制的直线是由一系列与该 直线最近的像素绘制而成
理论直线与计算机绘制的直线之间 总有一定的偏差
只能尽量减少偏差
偏差取决于屏幕光栅(分辨率)和光点 的运动方向
y = m*x + b
m = (y2-y1)/(x2-x1)
b = y1-m*x1
y= m* x
x = y/m h
11
3.2 画线算法
对于模拟显示设备,方程y、 x是决定偏 转电压变化的基础。
➢ 当|m|<1, △x 可以设置为正比于一水平偏转 电压, △y则可以根据公式计算。
➢ 当|m|>1, △y 可以设置为正比于一垂直偏转 电压, △x则可以根据公式计算。
yk
d1
y=mx+b
xk
xk+1
h
x
29
Bresenham 算法公式推导
假定:0<m<1, 已知(xk, yk),求下一点(xk+1, yk+1)
(xk+1, yk+1)的两种可能:
(xk+1, yk) 和 (xk+1, yk+1),其中xk+1 = xk+1
h
30
Bresenham 算法公式推导
h
20
DDA算法 举例
已知直线的两个端点P1(20,10),P2(30,18), 用DDA算法使该线段光栅化。
解:dx = 10; dy = 8;
循环次数:steps = 10;
沿X轴单位取样:x_in= 1 Y按斜率变化: y_in = 0.8
h
21
DDA算法 举例
step k (x,y)
h
12
直线绘制要求
直 端点准确 亮度均匀 速度 属性
h
13
求直线中间的各个像素点
y y2
y1
x1
h
x2 x
14
1. DDA算法
数字微分分析仪 思想:在一个坐标轴上以单位间隔对线
段取样,则另一个坐标轴以常数m或 1/m变化,从而获得线段上各像素点
h
15
直线中间的各个像素点-沿x轴取样
推导:设两点与理想直线距离分别为d1、d2
d1=y - yk=m*xk+1+b - yk =m*(xk+1)+b- yk d2= yk+1 - y=yk+1-m*(xk+1)-b d1 - d2=2m(xk+1)-2yk+2b-1 代入m= y / x,
h
19
DDA算法
画直线的DDA算法可表示为: 若|m|≤1:xk+1=xk+1,yk+1=yk+m
or : xk+1=xk-1,yk+1=yk-m
;xa<xb ;xa>xb
若|m|≥1:yk+1=yk+1, xk+1=xk+1/m ;ya<yb or :yk+1=yk-1, xk+1=xk-1/m ; ya>yb
8
(29,17.2) (29,17)
h
22
9
(30, 18)
(30, 18)
DDA算法 举例
18 17
16
15 14
13 12 11 10
20 21 22 23 24 2h 5 26 27 28 29 30
23
DDA算法的C实现
#define Round(a) ((int)(a + 0.5))
void lineDDA(int xa, int ya, int xb, int yb)
{
int dx = xb - xa, dy = yb - ya, steps, k;
float xIncrement, yIncrement, x=xa, y=ya;
if (abs(dx) > abs(dy))
steps = abs(dx);
第三章 输出图元
h
1
第三章 输出图元
点绘制 画线算法 圆生成算法 多边形
h
2
图元的概念
最基本的图形元素/图形输出原语
类型
图形一级元素:点、线
图形二级元素:弧、圆、多边形、曲 线、字符
其他:...
h
3
3.1 点和直线
点 直线
h
4
点的绘制
光栅扫描系统:帧缓冲器对应位置设为1 其他元素的绘制都在以点为基础产生。
else
steps = abs(hdy);
24
xIncrement = dx/(float) steps;
yIncrement = dy/(float) steps;
setpixel(Round(x), Round(y), RED);
for(k=0;k<steps;k++)
{
x += xIncrement;
h
27
Bresenham 算法思想
思想:只用整数计算寻找最接近实际直线的整数坐标
y=mx+
13
b
12
11
10
10 11 12 13 14 15 16
从(10,10)像素开始,绘制h 0<m<1直线的屏幕网格28
Bresenham 算法思想
y
yk+h
8
3.2 画线算法
问题 画线算法
➢ DDA算法 ➢ Bresenham算法
h
9
3.2 画线算法
问题 已知直线的两个端点P1(x1, y1),P2(x2, y2) 求直线的中间各点
h
10
3.2 画线算法
已知:P1(x1,y1),P2(x2,y2) 直线的笛卡尔斜率截距方程
y += yIncrement;
setpixel(Round(x), Round(y), RED);
}
}
h
25
DDA算法 评价
比直接使用公式 y=m*x+b快 ,没有 用乘法
运算仍然耗时
➢ 设置增量的除法运算 ➢ 取整操作 ➢ 浮点
较长线段的误差积累
h
26
2. Bresenham算法
由Bresenham提出的一种精确而有效的光 栅线段生成算法,可用于直线、圆(圆弧)和 其它曲线的生成
像素点
(20, 10)
(20, 10)
0
(21,10.8) (21,11)
1
(22,11.6) (22,12)
2
(23,12.4) (23,12)
3
(24,13.2) (24,13)
4
(25, 14)
(25, 14)
5
(26,14.8) (26,15)
6
(27,15.6) (27,16)
7
(28,16.4) (28,16)
y
|m| <1
y2
y1
x1
h
x2 x
16
DDA算法公式
直线斜率满足|m|<1时,取x方向为 单位步长
递推公式为: xk+1=xk1 yk+1=ykm
h
17
求直线中间各个像素点-沿y轴取样
y |m|>1
y2
y1
h
18
x1
x2 x
DDA算法公式
直线斜率满足|m|>1时,取y 方向为单位步长
递推公式为: yk+1=yk1 xk+1=xk1/m
h
5
直线的绘制
光栅扫描系统 ➢ 屏幕位置以整数值表示; ➢ 以线路径上的离散点来显示线段 ➢ 显示的线段具有阶梯效果
h
6
直线的绘制
计算机绘制的直线是由一系列与该 直线最近的像素绘制而成
理论直线与计算机绘制的直线之间 总有一定的偏差
只能尽量减少偏差
偏差取决于屏幕光栅(分辨率)和光点 的运动方向
y = m*x + b
m = (y2-y1)/(x2-x1)
b = y1-m*x1
y= m* x
x = y/m h
11
3.2 画线算法
对于模拟显示设备,方程y、 x是决定偏 转电压变化的基础。
➢ 当|m|<1, △x 可以设置为正比于一水平偏转 电压, △y则可以根据公式计算。
➢ 当|m|>1, △y 可以设置为正比于一垂直偏转 电压, △x则可以根据公式计算。
yk
d1
y=mx+b
xk
xk+1
h
x
29
Bresenham 算法公式推导
假定:0<m<1, 已知(xk, yk),求下一点(xk+1, yk+1)
(xk+1, yk+1)的两种可能:
(xk+1, yk) 和 (xk+1, yk+1),其中xk+1 = xk+1
h
30
Bresenham 算法公式推导
h
20
DDA算法 举例
已知直线的两个端点P1(20,10),P2(30,18), 用DDA算法使该线段光栅化。
解:dx = 10; dy = 8;
循环次数:steps = 10;
沿X轴单位取样:x_in= 1 Y按斜率变化: y_in = 0.8
h
21
DDA算法 举例
step k (x,y)
h
12
直线绘制要求
直 端点准确 亮度均匀 速度 属性
h
13
求直线中间的各个像素点
y y2
y1
x1
h
x2 x
14
1. DDA算法
数字微分分析仪 思想:在一个坐标轴上以单位间隔对线
段取样,则另一个坐标轴以常数m或 1/m变化,从而获得线段上各像素点
h
15
直线中间的各个像素点-沿x轴取样
推导:设两点与理想直线距离分别为d1、d2
d1=y - yk=m*xk+1+b - yk =m*(xk+1)+b- yk d2= yk+1 - y=yk+1-m*(xk+1)-b d1 - d2=2m(xk+1)-2yk+2b-1 代入m= y / x,
h
19
DDA算法
画直线的DDA算法可表示为: 若|m|≤1:xk+1=xk+1,yk+1=yk+m
or : xk+1=xk-1,yk+1=yk-m
;xa<xb ;xa>xb
若|m|≥1:yk+1=yk+1, xk+1=xk+1/m ;ya<yb or :yk+1=yk-1, xk+1=xk-1/m ; ya>yb
8
(29,17.2) (29,17)
h
22
9
(30, 18)
(30, 18)
DDA算法 举例
18 17
16
15 14
13 12 11 10
20 21 22 23 24 2h 5 26 27 28 29 30
23
DDA算法的C实现
#define Round(a) ((int)(a + 0.5))
void lineDDA(int xa, int ya, int xb, int yb)
{
int dx = xb - xa, dy = yb - ya, steps, k;
float xIncrement, yIncrement, x=xa, y=ya;
if (abs(dx) > abs(dy))
steps = abs(dx);
第三章 输出图元
h
1
第三章 输出图元
点绘制 画线算法 圆生成算法 多边形
h
2
图元的概念
最基本的图形元素/图形输出原语
类型
图形一级元素:点、线
图形二级元素:弧、圆、多边形、曲 线、字符
其他:...
h
3
3.1 点和直线
点 直线
h
4
点的绘制
光栅扫描系统:帧缓冲器对应位置设为1 其他元素的绘制都在以点为基础产生。
else
steps = abs(hdy);
24
xIncrement = dx/(float) steps;
yIncrement = dy/(float) steps;
setpixel(Round(x), Round(y), RED);
for(k=0;k<steps;k++)
{
x += xIncrement;