计算机图形学 算法总结
计算机图形学中的基本算法

计算机图形学中的基本算法计算机图形学是指利用计算机来生成、处理、显示和存储各种图形的学科。
它与计算机科学、数学、物理等学科密切相关。
计算机图形学中的基本算法主要包括几何变换算法、渲染算法、图像处理算法等。
下面将对这些算法进行详细的介绍。
一、几何变换算法几何变换是指将一个图形在平面内旋转、缩放、移动等操作,使其达到一定的位置、大小和角度的变化过程。
计算机图形学中的几何变换算法包括平移、旋转、缩放、错切等操作。
其中,平移是指沿着水平和垂直方向移动一个图形;旋转是指将一个图形绕着一个指定的点进行旋转;缩放是指按照指定的比例拉伸或缩小一个图形;错切则是指利用斜角度数将一个图形在平面上扭曲。
在几何变换算法中,矩阵变换是应用最广泛的算法之一。
矩阵变换的原理是将一个图形的顶点坐标与变换矩阵相乘,得到变换后的新的顶点坐标。
二、渲染算法渲染算法是指将数学模型变成可视的图像的过程。
计算机图形学中的渲染算法包括光照模型、投影、纹理映射等。
其中,光照模型主要是指计算出一个物体表面上每一个点的颜色,包括漫反射、镜面反射等各种光照情况;投影是指将一个三维模型映射成为二维的图像;纹理映射则是指将一个图像贴到一个三维模型上,使其更加逼真。
常用的渲染算法包括光线跟踪、光栅化、体积渲染等。
光线跟踪是指跟踪光线的路径,并计算出光线和物体的相交点,进而得到图像的颜色、阴影等信息;光栅化则是将物体投影到屏幕上,并对每个像素点进行操作,确定其颜色和浓度;体积渲染则是将物体看作是一个体积,通过计算对光线的投影,得出图像的颜色和亮度。
三、图像处理算法图像处理算法主要是指对二维图像进行处理和优化。
计算机图形学中的图像处理算法包括图像变换、信号处理等。
其中,图像变换主要是指对图像进行缩放、旋转、扭曲等处理,以获得更好的显示效果;信号处理则是指对图像的灰度、对比度、亮度等进行调整,以使图像更加清晰、鲜明。
常用的图像处理算法包括图像过滤、边缘检测、形态学、分割等。
计算机图形学的基本原理和算法

计算机图形学的基本原理和算法计算机图形学是计算机科学中的一个重要分支,它研究的是如何利用计算机来进行图像和模型的处理、生成和表示。
在现代社会中,计算机图形学已经广泛应用于游戏、电影、设计等领域,它不仅为人们带来了极大的乐趣和便利,也为科学技术的发展带来了重要的推动作用。
本文将介绍计算机图形学的基本原理和算法,包括三维图形学、二维图形学和几何计算等方面的内容。
一、三维图形学三维图形学是计算机图形学的核心领域之一,它研究的是如何使用计算机来生成、处理和显示三维图像。
三维图形学的基本原理是利用数学模型来描述和表示三维图像,其中最基本的数学模型是三维坐标系和向量。
三维坐标系中的每个点都可以用三个坐标来表示,而向量则是以两个点之间的差值来表示。
在三维图形学中,常用的向量运算包括加法、减法、点积和叉积,在这些运算中,向量的长度和方向都是非常重要的参数。
三维图形学中的常用算法包括三维渲染、立体几何、曲面细分和体绘制等。
三维渲染算法是将物体表面和光线结合起来,生成真实的三维图像的过程。
其中常用的三维渲染算法包括光线跟踪、简单光照和阴影投射算法等。
另外,立体几何和曲面细分算法则是用来对三维模型进行建模和细化的,它们可以帮助设计师快速地创造各种复杂的三维模型。
最后,体绘制算法则可以将三维模型表示为一系列立体图形,以使其更加直观和易于理解。
二、二维图形学二维图形学是计算机图形学中另一个重要的分支,它主要研究的是如何使用计算机来生成、处理和显示二维图像。
在二维图形学中,最常用的数学模型是笛卡尔坐标系和矩阵运算。
笛卡尔坐标系采用了直角坐标系的表示方法,在这种坐标系中,每个点都可以用一个有序的数对来表示,其中横坐标代表点在水平方向上的位置,纵坐标则代表点在垂直方向上的位置。
二维图形学中常用的算法包括图形转换、图形填充、线段裁剪和图像滤波等。
图形转换算法是将图像从一个坐标系转换到另一个坐标系的过程,其中最常用的算法包括平移、缩放、旋转和剪切等。
计算机图形学复习总结

一、名词解释:1、计算机图形学:用计算机建立、存储、处理某个对象的模型,并根据模型产生该对象图形输出的有关理论、方法与技术,称为计算机图形学。
3、图形消隐:计算机为了反映真实的图形,把隐藏的部分从图中消除。
4、几何变换:几何变换的基本方法是把变换矩阵作为一个算子,作用到图形一系列顶点的位置矢量,从而得到这些顶点在几何变换后的新的顶点序列,连接新的顶点序列即可得到变换后的图形。
6、裁剪:识别图形在指定区域内和区域外的部分的过程称为裁剪算法,简称裁剪。
7、透视投影:空间任意一点的透视投影是投影中心与空间点构成的投影线与投影平面的交点。
8、投影变换:把三维物体变为二维图形表示的变换称为投影变换。
9、走样:在光栅显示器上绘制非水平且非垂直的直线或多边形边界时,或多或少会呈现锯齿状。
这是由于直线或多边形边界在光栅显示器的对应图形都是由一系列相同亮度的离散像素构成的。
这种用离散量表示连续量引起的失真,称为走样(aliasing )。
10、反走样:用于减少和消除用离散量表示连续量引起的失真效果的技术,称为反走样。
二、问答题:1、简述光栅扫描式图形显示器的基本原理。
光栅扫描式图形显示器(简称光栅显示器)是画点设备,可看作是一个点阵单元发生器,并可控制每个点阵单元的亮度,它不能直接从单元阵列中的—个可编地址的象素画一条直线到另一个可编地址的象素,只可能用尽可能靠近这条直线路径的象素点集来近似地表示这条直线。
光栅扫描式图形显示器中采用了帧缓存,帧缓存中的信息经过数字/模拟转换,能在光栅显示器上产生图形。
2、分别写出平移、旋转以及缩放的变换矩阵。
平移变换矩阵:⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡1010000100001z y xT T T (2分) 旋转变换矩阵: 绕X 轴⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-10000cos sin 00sin cos 00001θθθθ(2分) 绕Y 轴⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-10000cos 0sin 00100sin 0cos θθθθ(2分)绕Z 轴⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-1000010000cos sin 00sin cos θθθθ(2分) 缩放变换矩阵:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡1000000000000zy x S S S (2分) 3、图形变换有什么特点?最基本的几何变换有哪些?答:图形变换的特点:大多数几何变换(如平移、旋转和变比)是保持拓扑不变的,不改变图形的连接关系和平行关系。
计算机图形学算法研究及应用

计算机图形学算法研究及应用一、计算机图形学的概述计算机图形学是一门研究计算机图形处理技术的学科,主要涉及的领域包括图像处理、计算机视觉、计算机动画等等。
计算机图形学的目的是通过数学和物理的方法来模拟出图像,使得计算机能够产生逼真的图像效果。
计算机图形学应用广泛,包括电影、游戏、动画、虚拟现实等领域。
在这些领域,计算机图形学提供了强大的技术支持,使得人们能够创造出更加美丽、逼真的图像和场景。
二、计算机图形学算法及应用1. 渲染算法渲染算法是计算机图形学中的一种核心算法,它主要用于将三维模型转换成二维图像的过程中。
渲染算法分为共价光线追踪算法和光线跟踪算法两种。
共价光线追踪算法主要是通过向屏幕中的每个像素投射一条光线,然后通过计算光线在视线与摄像机之间的碰撞点和反射光线的方向,来决定每一个像素的显示颜色。
这种算法的优点在于效率高,能够快速的渲染出逼真的图像。
光线跟踪算法则是通过相反的方式处理,反向追踪光线从像素点到场景中摄像机的路径。
这种算法的优点在于能够处理更广泛的光照条件下的图像,但相应的计算量也会增加。
2. 图像处理算法图像处理算法主要包括图像滤波、图像噪音处理、图像分割和图像拼接等。
在电影和游戏制作中,图像处理算法的应用非常广泛。
通过图像处理算法,可以对图像进行优化,去除噪声和模糊等问题。
3. 线性代数及变换算法线性代数及变换算法主要是用于转换和映射三维坐标关系至二维坐标形式中。
在计算机图形学中,线性代数起到了重要的推动作用,如3D对象的旋转、缩放,肉眼无法理解的物理效果的实现等等。
4. 计算机视觉算法计算机视觉算法主要用于实现计算机图像的理解和模拟,如人脸识别和场景识别等。
在图像识别和智能物流等领域,计算机视觉技术得到了广泛应用。
5. 计算机动画算法计算机动画算法主要用于模拟动画动态效果,如烟雾、火焰和水波等。
随着计算机技术的不断发展,计算机动画技术越来越成熟,计算机动画逐渐成为电影和游戏制作的重要手段之一。
计算机图形学

三个常用算法数值微分法(DDA)中点画线法Bresenham算法
区域连通:
区域指已经表示成点阵形式的填充图形,它是象素的集合。
区域可采用内点表示和边界表示两种表示形式。
区域可分为4向连通区域和8向连通区域。
区域填充指先将区域的一点赋予指定的颜色,然后将该颜色扩展到整个区域的过程。
区域填充算法要求区域是连通的
算法步骤:
首先填充种子点所在扫描线上的位于给定区域的一个区段
然后确定与这一区段相连通的上、下两条扫描线上位于给定区域内的区段,并依次保存下来。
反复这个过程,直到填充结束。
多边形扫描转换:多边形有两种重要的表示方法:顶点表示和点阵表示。
多边形的扫描转换:把多边形的顶点表示转换为点阵表示。
逐点判断法;
扫描线算法;
边界标志。
计算机图形学的基本概念与算法

计算机图形学的基本概念与算法计算机图形学是研究如何利用计算机生成、处理和显示图像的学科。
它在许多领域中都有广泛应用,例如电影制作、游戏开发、医学成像等。
本文将介绍计算机图形学的基本概念和算法,并分步详细列出相关内容。
一、基本概念1. 图像表示:计算机图形学中,图像通常使用像素(Pixel)来表示。
每个像素包含了图像上一个特定位置的颜色或灰度值。
2. 坐标系统:计算机图形学使用不同的坐标系统来表示图像的位置。
常见的坐标系统有笛卡尔坐标系、屏幕坐标系等。
3. 颜色模型:计算机图形学中常用的颜色模型有RGB模型(红、绿、蓝)和CMYK模型(青、品红、黄、黑)等。
RGB模型将颜色表示为三个分量的组合,而CMYK模型用于打印颜色。
4. 变换:变换是计算机图形学中常用的操作,包括平移、旋转、缩放和剪切等。
通过变换,可以改变图像的位置、大小和方向。
5. 插值:在计算机图形学中,插值是指通过已知的数据点来推测未知位置的值。
常见的插值方法有双线性插值和双三次插值等。
二、基本算法1. 线段生成算法:线段生成是图形学中最基本的操作之一。
常见的线段生成算法有DDA算法(Digital Differential Analyzer)和Bresenham算法。
DDA算法通过计算线段的斜率来生成线段上的像素,而Bresenham算法通过绘制画板上的一个像素来逐渐描绘出整条直线。
2. 多边形填充算法:多边形填充是将一个多边形内的区域用颜色填充的过程。
常见的多边形填充算法有扫描线算法和边界填充算法。
扫描线算法通过扫描多边形的每一条水平线,不断更新当前扫描线下方的活动边并进行填充。
边界填充算法从某点开始,向四个方向延伸,逐渐填充整个多边形。
3. 圆弧生成算法:生成圆弧是计算机图形学中常见的操作之一,常用于绘制圆形和曲线。
常见的圆弧生成算法有中点圆生成算法和Bresenham圆弧生成算法。
中点圆生成算法通过计算圆弧中的每个点与圆心的关系来生成圆弧上的像素,而Bresenham圆弧生成算法通过在八个特定的扫描区域内绘制圆弧上的像素。
计算机图形学基础与算法解析

计算机图形学基础与算法解析计算机图形学是研究计算机在视觉领域的应用技术的学科,它涉及到图像的生成、处理和显示等方面。
在计算机图形学中,算法是至关重要的,通过算法能够实现图像的渲染、变形、动画等各种效果。
本文将对计算机图形学基础知识和一些常用算法进行解析。
一、计算机图形学基础计算机图形学的基础知识包括点、线、面的表示方法,以及基本的光照和颜色模型等概念。
1. 点、线、面的表示方法在计算机图形学中,点是最基本的元素。
点是二维空间中的一个位置,可以通过坐标表示。
线由多个点连接而成,可以通过直线方程、参数方程等方法表示。
面是由多个线连接而成,可以通过多边形的顶点坐标表示。
2. 光照和颜色模型在计算机图形学中,光照是指对物体施加光线,用于模拟光线对物体的照射效果。
颜色模型是用于表示光照下物体的颜色的一种模型。
常见的颜色模型有RGB 模型、CMYK模型和HSV模型等。
二、常用图形算法解析在计算机图形学中,许多常用的算法可以实现各种图形效果。
下面将对一些常见的算法进行解析。
1. 光线追踪算法光线追踪算法是一种用于模拟光的传播和反射的算法。
它通过从摄像机发出射线,追踪光线在场景中的路径,计算出光线与物体之间的相互作用,从而生成逼真的图像。
2. 三角形剖分算法三角形剖分算法是将一个不规则的多边形划分为许多个三角形的算法。
它可以用于网格生成、多边形填充等图形处理中。
常见的三角形剖分算法有Delaunay三角网格算法和Ear Clipping算法等。
3. 贝塞尔曲线算法贝塞尔曲线算法是一种用于生成平滑曲线的算法。
它通过控制点的位置和权重来确定曲线的形状。
贝塞尔曲线常常用于计算机辅助设计(CAD)和计算机动画等领域。
4. 光栅化算法光栅化算法是将连续的二维图形转换为离散的像素点的算法。
它可以实现图形的渲染、填充和显示等效果。
常见的光栅化算法有扫描线算法和边界填充算法等。
5. 图像压缩算法图像压缩算法是将图像数据进行压缩以减少存储和传输所需的空间和带宽的算法。
计算机图形学的基本算法

计算机图形学的基本算法计算机图形学是研究如何利用计算机生成、处理和显示图像的学科。
图形学的基本算法涵盖了多个方面,包括图像绘制、几何变换、光照和渲染等。
以下将详细介绍计算机图形学的基本算法及其步骤。
1. 图像绘制算法:- 像素绘制算法:基于像素的图形绘制算法包括点绘制、线段绘制和曲线绘制。
例如,Bresenham线段算法可用于绘制直线。
- 多边形填充算法:多边形填充算法用于绘制封闭曲线图形的内部区域。
常见的算法包括扫描线填充算法和种子填充算法。
2. 几何变换算法:- 平移变换:平移变换算法用于将图像在平面上进行上下左右的平移操作。
- 旋转变换:旋转变换算法用于将图像按照一定的角度进行旋转。
- 缩放变换:缩放变换算法用于按照一定的比例对图像进行放大或缩小操作。
- 剪切变换:剪切变换算法用于按照一定的裁剪方式对图像进行剪切操作。
3. 光照和渲染算法:- 光照模型:光照模型用于模拟物体与光源之间的相互作用。
常见的光照模型有Lambert模型和Phong模型等。
- 阴影生成算法:阴影生成算法用于在渲染过程中生成逼真的阴影效果。
例如,阴影贴图和阴影体积等算法。
- 光线追踪算法:光线追踪算法通过模拟光线的路径和相互作用,实现逼真的光影效果。
常见的光线追踪算法包括递归光线追踪和路径追踪等。
4. 图像变换和滤波算法:- 傅里叶变换算法:傅里叶变换算法用于将图像从时域转换到频域进行分析和处理。
- 图像滤波算法:图像滤波算法用于对图像进行平滑、锐化、边缘检测等操作。
常见的滤波算法包括均值滤波、高斯滤波和Sobel算子等。
5. 空间曲线和曲面生成算法:- Bézier曲线和曲面算法:Bézier算法可用于生成平滑的曲线和曲面,包括一阶、二阶和三阶Bézier曲线算法。
- B样条曲线和曲面算法:B样条算法可用于生成具有更高自由度和弯曲度的曲线和曲面。
以上列举的是计算机图形学中的一些基本算法及其应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
外侧的不算交点。
Байду номын сангаас
五、 消隐
画家算法 对场景中的多边形按深度进行排序,形成深度优先级表, 按从远倒近的顺序 显示多边形 不能处理循环遮挡,计算量大。 Z 缓冲器算法 { for(v=0;v<vmax;v++) for(u<0;u<umax;u++) { 置 Z 缓冲器的第(u,v)单元的深度值为-1 置帧缓冲器的第(u,v)单元的颜色值为背景色 } for(每一个多边形) for(多边形投影区域内的每一个像素) { 计算多边形在当前像素(u,v)处的深度值,记为 d; if(d>Z 缓冲器的(u,v)单元的值) { 置 Z 缓冲器的第(u,v)单元的深度值为 d; 置帧缓冲器的第(u,v)单元的颜色值为当前多边形颜色值; } } 扫描线 Z 缓冲器算法
加权区域采样方法 改进非加权区域采样方法:相交面积相同,像素亮度可能不同 求出相交区域 A’,然后用 计算相交区域对像素的亮度贡献值,这个计
算结果乘以最大亮度值就是该像素的亮度。W(x,y)是高斯分布函数。 离散算法: 分割像素成 n 个子像素,每个子像素面积为 1/n,用 计算每个子像素
对原像素的亮度贡献权值, 记录在加权表中。然后求所有中心落在直线段里的子 像素的集合。最后针对上述集合计算亮度贡献权值的代数和作为亮度值。
扫描转换多边形 逐点判断法、扫描线算法、边缘填充法 逐点判断法: 射线法:从每个象素点发射线,交点个数偶数的在外,反之在内。避免射线 通过顶点。 累积角度法: 记录从该象素到多边形每个顶点的有向角 (逆时针旋转为正) , 若代数和为 0 则在外,若为正负 2pi 的在内。 编码方法:从 X 轴起逆时针把各象限编码,确认各顶点所在象限的编码, 然后两顶点相减计算各边的编码,用 4 处理使编码绝对值不大于 2,最后求各边 编码代数和。代数和为 0 的在外,为正负 4 的在内。特殊情况:(1)点在边上.预 处理解决 (2)代数和为正负 2(取中点再编码,递归) 扫描线算法 求扫描线与多边形各边的交点 对所得交点从小到大排序 两两配对,填充每个区段 原则:与扫描线的交点向多边形内取整。交点落在象素点上时,仅落在左边上的 属于多边形。交点为多边形顶点时,每个边被认为下闭上开(p74)。 数据结构和算法流程 P76 特点:算法效率比逐点填充法高很多 缺点:对各种表的维持和排序开销太大,适合软件实现而不是硬件实现。
四、 二维裁剪
两个步骤:图元在窗口内外的判别,图元与窗口的求交。 简单图形(点、线、面)适合先裁剪再扫描转换。 直线段裁剪 三种关系(1)完全可见(2)完全不可见(3)其他。前两种情况可快速判断 直接求交算法: 直线和窗口都写成参数形式,解方程求交计算裁剪部分。 Cohen-Sutherland 编码算法
边缘填充法: 基本思想: 对于每条扫描线盒每条多边形边的交点, 将该扫描线上交点右方的所 有像素颜色取补。对多边形的每条边做此处理。 原理:以求余运算代替扫描线算法中的排序运算。 特点:适合用于具有帧缓存的图形系统。算法简单,但对于复杂图形,每一像素 被访问多次,输入输出多。
扫描转换扇形区域 原理同多边形扫描转换,问题在于确认扫描线与直边和圆弧边的相交顺序。 分情况讨论,固定 P1 在第一象限时有 4 种情况,一共十六种。
前者从边界顶点信息出发,后者从区域内种子点出发。
三、 二维光栅图形的混淆与反混淆
用离散量(像素)表示连续的量(图形)而引起的失真,叫做混淆或者走样。 反混淆方法 提高分辨率:方便,代价巨大 区域采样方法: 把直线段看做具有一定宽度的狭长矩形, 当直线段与 像素有交时,求出相交区域的面积。根据面积大小确 定亮度值, 使相邻两个像素的灰度之间有平缓的过渡。 非加权区域采样方法: 非加权区域采样方法性质: (1)像素亮度与相交区域面积成正比,和直线段与像素中心点的距离成反比。 (2)直线与像素不相交,对像素的亮度无影响 (3)相交区域面积相同,像素的亮度就相同,与相交区域的几何位置无关。 离散方法求相交面积: (1)把像素分为 n 个子像素 (2)计算子像素中心落在直线段区域内的个数,记为 k (3)k/n 为相交区域面积近似值
生成圆弧的正负法 曲线把平面分成 G+和 G-两个区域,前进△x 时,到达 P1,再前进△y 到 P2,之 后若点与 P1 在同侧,则前进△y,否则前进△x。 判别式 D(Pi)=F(Pi).F(P1)=F(xi,yi).F(x0+△x,y0)
二、 二维填充图元的生成
扫描转换矩形 做 x,y 坐标的二重循环,逐点填充。 共享边界:左闭右开,下闭上开。
8,边编码为正负 4 时特殊处理)-》多边形编码(为其边的编码和) 。编码和为 0 时窗口与多边形分离,为正负 8 时多边形包围窗口。 光线投射算法
区域细分为 9 个。考察 P0 在 0,4,5 情形。从 P0 向窗口四个角点引射线,把区域 分成 4 个有意义的区域。判断 p1 所在区域(用斜率) ,即可判断 P0,P1 该与窗口 哪条边求交,求出交点后判断线段可见部分。 效率高,但只适合二维矩形窗口。 中点分割法: 从 P0 点出发找距 P0 最近的可见点,从 p1 出发找距 P1 最近的可见点。 找与 p0 最近的可见点的方法(找 p1 的类似) :不断取 p0p1 的中点 pm,直到 Pm 和 P0 的距离小于某个值(一般为像素大小) ,否则判断 PmP0 的可见性,若显然 不可见用 pm 替代 p0,否则用 p1 替代 pm。如此进行下去。 适合硬件、并行计算。
优点:避免扫描线和多边形、扫描线和边盲目求交 缺点:在被多个多边形覆盖的像素需要多次计算深度值 扫描线算法 以区间为单位确定填充区间,不需要 Z buffer
区域子分算法 将场景中的多边形投影到绘图窗口,判断绘图窗口是否足够简单。如果是,则算 法结束,否则将窗口进一步分成四块,对此四个小窗口重复上述过程,一直到窗 口仅为一个像素大小。此时若有多个多边形覆盖这个像素,计算它们的深度值, 用最近者的颜色显示该像素。 简单的定义:分离、包含、相交、包围(最靠近观察点) 区别分离和包围的方法:区域编码-》多边形顶点编码-》多边形边编码(周期为
区域填充 四向联通区域、八向联通区域 边界表示的四连通递归算法(种子填充算法) : 种子像素入栈, 栈非空时, 重复执行以下步骤: 栈顶像素出栈, 将出栈像素置色, 四向检查像素,若其中某个像素不在边界且未被置色,则该像素入栈。 可用于填充带内孔的平面区域。 缺点:有些像素反复入栈降低效率,栈结构占空间。递归执行算法简单但效率不 高。可用下面的扫描线填充算法解决。 扫描线填充算法 目标:减少递归 算法: 栈顶像素出栈 沿扫描线对出栈像素的左右像素进行填充,直到遇到边界像素为止。 (填充区间) 检查上下扫描线,选相应区间的最左像素作为种子入栈。 特点:由区域算法定区间,再定上下邻区间。 多边形扫描转换与区域填充方法比较: 不同点: 前者将顶点表示转换成点阵表示,后者只是改变颜色,没有改变表示方法。 前者只要求扫描线与多边形边界交点个数为偶数。后者要求区域封闭。
多边形裁剪 Sutherland-Hodgman 算法 分割处理: 将多边形关于矩形窗口的裁剪分解为多边形关于窗口四边所在直线的 裁剪。 流水线处理,处理顺序左、上、右、下。 逐边裁剪:两次分解,流水线处理。 第一次:将多边形对矩形窗口的裁剪分解为它关于窗口四边所在直线的裁剪。 第二次:将多边形关于一条直线的裁剪分解为多边形各边关于该直线的裁剪。 裁剪结果的顶点构成:裁剪边内侧的原顶点,多边形的边与裁剪边的交点。 特点:适合硬件计算。能够推广到任意凸多边形及三维裁剪。 Weiler-Atherton 算法
被裁剪多边形是主多边形, 裁剪窗口为裁剪 多边形。 内裁剪(A 交 B) 、外裁剪(A-B) 。 明确进点、出点。 算法步骤: 建主多边形和裁剪多边形的顶点表 求主多边形和裁剪多边形的交点, 交点顺序 插入两多边形的顶点表中, 相同交点间建立 双向指针。 裁剪: 如果存在没有被跟踪过的交点, 执行以下步 骤: (1)建立裁剪结果多边形的顶点表 (2)选取任意没有被跟踪过的交点为始点,将其输出到结果多边形顶点表中。 (3)如果该交点为进点,跟踪主多边形边边界,否则跟踪裁剪多边形边界。 (4)跟踪多边形边界,每遇到多边形顶点,将其输出到结果多边形顶点表中, 直到遇到新的交点。 (5)将该交点输出到结果多边形顶点表中,并通过连接该交点的双向指针改变 跟踪方向(主-》裁剪,裁剪-》主) (6)重复 4、5 直至回到起点 奇异情况: 顶点落在裁剪多边形的边上的的主多边形的边, 落裁剪边内侧算交点,
计算机图形学 算法总结
viopond@life-sciences
一、 二维线画图元的生成
扫描转换直线段 生成直线段的 DDA 算法 利用直线方程直接计算,结果取整。 用到浮点数的加法和取整。 生成直线段的中点算法 利用直线的正负划分性,构造隐函数 F(x,y) 。每次计算 F(xi+1,yi+0.5) ,判 断函数正负,若为正则下一点在右侧,若为负则下一点在右上。 判别式 F(x,y)=△xy-△yx-△xB (原直线 y=mx+B,把 m 改写)。计算判别式递 推的方法:分 d>=0 和 d<0 两个情况,计算横坐标为 xi+2 时的判别式表达式,获 得 d 的增量。 Breseham 画线算法 d 是误差项。x 下标每次加 1,d 相应增加斜率 k。一旦 d>=1,就把它减去 1。 当 d>=0.5 时,取当前象素右上方象素。当 d<0.5 时,取右边象素。为方便计 算, 令 e=d-0.5 扫描转换圆弧 圆的八对称性 利用圆弧方程开根计算或者利用参数方程计算,开根/三角函数,计算量大 圆弧的中点算法 F(x,y)=x^2+y^2-R^2 正在圆弧外,取右下。负在圆弧内,取右。 第一象限:构造判别式 d=F(M)=F(xi+1,yi-0.5),递推方法类似直线的中点算法。 椭圆的中点画法也与此类似。判别式函数不一样而已。 生成圆弧的多边形逼近法 给定最大逼近误差 delta,确定圆心角,R-Rcosa<=delta n=2pi/a 下一个顶点,用 cosa –sina 矩阵 乘 xi sina cosa yi 一个顶点需 4 次乘法,一共 4n 次乘法,外加直线段中点算法的计算量 圆的等面积逼近法 求多边形径长,从而求所有顶点坐标。由逼近误差值确定圆心角 a。