第4章基本图形(元)生成技术 提纲: 1.直线生成技术; 2.圆与椭圆生成技术
第4章 基本图形(元)生成技术 提纲: 1. 直线生成技术; 2. 圆与椭圆生成技术
●我们知道,光栅图形显示器是一个像素矩阵,如 分辨率为640X480,每个像素可以用一种或多种 颜色显示,分别称为单色显示器或彩色显示器。 在光栅显示器上显示的任何一种图形,实际上都 是具有一种或多种颜色的像素的集合。确定一个 像素集合及其颜色,用于显示一个图形的过程, 称为图形的扫描转换或光栅化,也叫图形的生成 实际上,图形生成是根据图形的几何信息和属性 信息,结合图形生成算法,计算出要显示的中间 像素,而不像图像生成是保存了图像的每一像素 点的信息。所以,基本图形的生成,首先要根据 基本图形的特征找出它的几何信息,然后根据 定的生成算法实时地在显示器上显示出完整的图 形
⚫ 我们知道,光栅图形显示器是一个像素矩阵,如 分辨率为640X480,每个像素可以用一种或多种 颜色显示,分别称为单色显示器或彩色显示器。 在光栅显示器上显示的任何一种图形,实际上都 是具有一种或多种颜色的像素的集合。确定一个 像素集合及其颜色,用于显示一个图形的过程, 称为图形的扫描转换或光栅化,也叫图形的生成。 实际上,图形生成是根据图形的几何信息和属性 信息,结合图形生成算法,计算出要显示的中间 像素,而不像图像生成是保存了图像的每一像素 点的信息。所以,基本图形的生成,首先要根据 基本图形的特征找出它的几何信息,然后根据一 定的生成算法实时地在显示器上显示出完整的图 形
图形扫描转换一般分为两个步骤:先确 定有关像素,再用图形的颜色或其它属 性对象素进行某种写操作。后者通常是 通过调用设备驱动程序来实现的。所以 扫描转换的主要任务就是确定最佳逼近 于图形的像素集的生成算法
⚫ 图形扫描转换一般分为两个步骤:先确 定有关像素,再用图形的颜色或其它属 性对象素进行某种写操作。后者通常是 通过调用设备驱动程序来实现的。所以 扫描转换的主要任务就是确定最佳逼近 于图形的像素集的生成算法。
●本章主要讨论基本图形的扫描转换问题, 包括 (1)一维直线、圆、椭圆的生成 ●(2)二维图形(多边形)的填充 (3)字符的表示和输入输出; (4)图形的裁剪和反走样技术;
⚫ 本章主要讨论基本图形的扫描转换问题, 包括: ⚫ (1)一维直线、圆、椭圆的生成; ⚫ (2)二维图形(多边形)的填充; ⚫ (3)字符的表示和输入输出; ⚫ (4)图形的裁剪和反走样技术;
●在一个图形系统中,基本图形(也称为 图元、图素等)的生成技术是最基本的, 任何复杂的图形都是由基本图形组成的, 基本图形生成的质量直接影响该图形系 统绘图的质量。所以,需要设计出精确 的基本图形生成算法,以确保图形系统 绘图的精确性
⚫ 在一个图形系统中,基本图形(也称为 图元、图素等)的生成技术是最基本的, 任何复杂的图形都是由基本图形组成的, 基本图形生成的质量直接影响该图形系 统绘图的质量。所以,需要设计出精确 的基本图形生成算法,以确保图形系统 绘图的精确性
4.1直线图形的生成技术 ●在数学上,两个坐标点可以确定出一条 直线,理想的直线是没有宽度的,由无 数个点构成的。在光栅图形显示器上显 示一条直线时,只能在显示器给定的有 限像素组成的矩阵中,确定最佳逼近于 该直线的一组像素点来表示,这就是直 线的扫描转换
4.1 直线图形的生成技术 ⚫ 在数学上,两个坐标点可以确定出一条 直线,理想的直线是没有宽度的,由无 数个点构成的。在光栅图形显示器上显 示一条直线时,只能在显示器给定的有 限像素组成的矩阵中,确定最佳逼近于 该直线的一组像素点来表示,这就是直 线的扫描转换
●在绘制斜线时,有些点不一定正好落在 像素点上,直线扫描转换算法必须确定 哪一个像素点来显示,从而形成“梯形 线”。当显示器分辨率很高时,仍可以 生成高质量的直线
⚫ 在绘制斜线时,有些点不一定正好落在 像素点上,直线扫描转换算法必须确定 哪一个像素点来显示,从而形成“梯形 线” 。当显示器分辩率很高时,仍可以 生成高质量的直线
●本节主要介绍三种创用的直线生成算法, 即数值微分法(DDA)、中点画线法和 Bresenham算法。这三种算法都是只考虑 个像素宽的直线,生成直线算法的函 数形式如下:Line(x0,yo,x1,yl, color);
⚫ 本节主要介绍三种创用的直线生成算法, 即数值微分法(DDA)、中点画线法和 Bresenham算法。这三种算法都是只考虑 一个像素宽的直线,生成直线算法的函 数形式如下:Line(x0,y0,x1,y1,color);
4.1.1数值微分法 1.原理 数值微分法(DDA, Digital Differential Analysis )是根据数学上直线的微分方程来设计的。设 A(xO.y0),B(x1y1)是直线的端点坐标,首先计算 出直线的斜率 k=dy/dx-△y△x=(yl-y0/(x1-xO) 直线方程为:y=kx+B或x-1/ky+T
4.1.1 数值微分法 1. 原理 数值微分法(DDA,Digital Differential Analysis )是根据数学上直线的微分方程来设计的。设 A(x0,y0),B(x1,y1)是直线的端点坐标,首先计算 出直线的斜率 k=dy/dx=△y/△x=(y1-y0)/(x1-x0) 直线方程为:y=kx+B 或 x=1/k.y+T
当k≤1时,让x每步增加1,y最多增加1, 然后用四舍五入的方法来确定直线上的 像素位置为(x, round(y)。设当前点为 (x1y;),则下一个像素x1=x1+1,则 y1+1=kx+1+B =k(x+1)+B=kx1+B)+k y1 +k 即当x每递增1时,y递增斜率k
当|k|≤1时,让x每步增加1,y最多增加1, 然后用四舍五入的方法来确定直线上的 像素位置为(x,round(y)) 。设当前点为 (xi ,yi ),则下一个像素xi+1 = xi +1,则 yi+1 =k xi+1 +B =k(xi+1)+B=(k xi +B)+k = yi +k 即当x每递增1时,y递增斜率k