Weiler-Atherton任意多边形裁剪算法
计算机科学技术:计算机图形学题库三
计算机科学技术:计算机图形学题库三1、名词解释扫描转换答案:在矢量图形中,多边形用顶点序列来表示,为了在光栅显示器或打印机等设备上显示多边形,必须把它转换为点阵表示。
这种转换称为扫描转换。
2、单选下面对光栅扫描图形显示器描述正确的是()A.荧光粉涂层均匀离散分布;B.是一种点画设备;C.电子束从顶到底扫描;D.通过控制电子束的强弱实现色彩的强弱;答案:A3、填空题计算机图形系统由()系统和软件系统组成。
答案:硬件4、填空题在处理图形时常常涉及的坐标系有模型坐标系(),世界坐标系,观察坐标系,设备坐标系。
答案:局部坐标系5、单选计算机图形学与计算机图象学的关系是()。
A.计算机图形学是基础,计算机图象学是其发展B.不同的学科,研究对象和数学基础都不同,但它们之间也有可转换部分C.同一学科在不同场合的不同称呼而已D.完全不同的学科,两者毫不相干答案:B6、问答题简述中点分割法进行裁剪的过程?答案:中点分割剪取法,主要是对线段不断地进行对分,并排除在区域外的部分,找出线段落在窗口内的部分。
其方法主要是通过求出离线段的一个端点最近并且在区域内的点的方法,来确定线段落在窗口内的端点。
7、问答题局部光照模型和全局光照模型的不同之处是什么?答案:局部光照模型主要是考虑光源发出的光对物体的直接影响。
另外,全局光照模型除了处理光源发出的光之外,还考虑其他辅助光的影响,如光线穿过透明或半透明物体,以及光线从一个物体表面反射到另一个表面等。
8、判断题彩色阴极射线管主要是由红绿蓝三个彩色电子束的亮度不同,进而组合形成各种色彩的。
答案:错9、问答题什么叫做走样?什么叫做反走样?反走样技术包括那些?答案:走样指的是用离散量表示连续量引起的失真。
为了提高图形的显示质量。
需要减少或消除因走样带来的阶梯形或闪烁效果,用于减少或消除这种效果的方法称为反走样。
其方法是①前滤波,以较高的分辨率显示对象;②后滤波,即加权区域取样,在高于显示分辨率的较高分辨率下用点取样方法计算,然后对几个像素的属性进行平均得到较低分辨率下的像素属性。
第3章 5 裁剪算法
xmin≤x0+ t· Δx≤xmax
ymin≤y0+ t· Δy≤ymax
t· Dk ≤Mk , k=1,2,3,4 其中: ① D1=-Δx, M1=x0-xmin ② D2= Δx, M2=xmax-x0 ③ D3=-Δy, M3=y0-ymin ④ D4= Δy, M4=ymax-y0 进行公式验证:
第一,当code1&code2≠0,能判断出直 线段显然在窗口之外. 然而这个条件
并没有包含所有的在窗口之外的直线段,比如: code1=0001,code2=0100,如图 中直线段P3P4,此时,
如何改进? code1&code2=0,但直线段也是完全在窗口之外.这就意
味着这类型的直线必须计算与窗口的边线求交,其实是 一种无意义操作;
Cohen-Sutherland算法的实现
算法优点: 1) 简单将不需剪裁的直线舍弃。法则是:若是
一条直线的两头在同一地区,则该直线不需裁剪, 不然,该直线为也许剪裁直线。
算法的缺点? 2) 对也许剪裁的直线缩小了与之求交的边框范
畴。法则是:若是直线的一个端点在上(下、左、 右)域,则此直线与上边框求交,然后移除上边框 以上的局部。该法则对直线的另一端点也实用。这 样,一条直线至多只需与两条边框求交。
第三章
裁剪是抽取数据的一部分,或者识别一个指定区域 内部或外部的画面或图片的成分的过程。
按照被裁剪的图形可以分为:二维裁剪算法和三维 裁剪算法
按照裁剪区域的形状可以分为:规则区域和不规则 区域
本章二维裁剪算法只考虑举行和多边形,裁剪的对 象只考虑点、线段、多边形、字符等。
三维裁剪算法只考虑正方体和平截头正四棱锥两种 裁剪盒,裁剪对象只考虑线段。
计算机图形学考核题库
第一章一、名词解释图形;图像;点阵表示法;参数表示法;二、选择题:1. 下面哪个不是国际标准化组织(ISO)批准的图形标准。
()A。
GKSB.PHIGSC.CGMD.DXF2. 下面哪一项不属于计算机图形学的应用范围?(B)A. 计算机动画;B. 从遥感图像中识别道路等线划数据;C。
QuickTime技术;D。
影视三维动画制作3. 关于计算机图形标准化的论述,哪个是正确的();A。
CGM和CGI是面向图形设备的接口标准;B。
GKS、IGES、STEP均是ISO标准;C. IGES和STEP是数据模型和文件格式的标准;D. PHIGS具有模块化的功能结构;4。
与计算机图形学相关的学科有____。
A. 图象处理B. 测量技术C. 模式识别D. 计算几何E. 生命科学F。
分子生物学三、判断题:计算机图形学和图像处理是两个近似互逆的学科。
[ ]计算机图形学处理的最基本的图元是线段。
[ ]四、简答题:图形包括哪两方面的要素,在计算机中如何表示它们?阐述计算机图形学、数字图象处理和计算机视觉学科间的关系. 图形学作为一个学科得以确立的标志性事件是什么?试列举出几种图形学的软件标准?工业界事实上的标准有那些?举例说明计算机图形学有哪些应用范围,解决的问题是什么?第二章一、选择题:1。
触摸屏是一种()A。
输入设备;B. 输出设备;C. 既是输入设备,又是输出设备;D. 两者都不是;2. 空间球最多能提供()个自由度;A。
一个;B. 三个;C. 五个;D. 六个;3。
等离子显示器属于()A. 随机显示器;B. 光栅扫描显示器;C。
平板显示器;D。
液晶显示器;4。
对于一个1024×1024存储分辩率的设备来说,当有8个位平面时,显示一帧图象所需要的内存为()A. 1M字节;B. 8M字节;C. 1M比特;D。
8M比特;5。
分辨率为1024*1024的显示器,其位平面数为24,则帧缓存的字节数应为()A。
3MB;B。
weiler-atherton多边形裁剪算法
weiler-atherton多边形裁剪算法weileratherton多边形裁剪算法,又称为weiler-atherton算法,是一种用于对多边形进行裁剪的算法。
它可以被用于计算机图形学中的裁剪任务,如可视化、图像处理和计算机辅助设计等领域。
本文将详细介绍weileratherton多边形裁剪算法的原理、步骤和实现方法。
1. 算法原理:weileratherton多边形裁剪算法是基于边界点的引入和处理的。
该算法将两个多边形相互之间进行裁剪,并生成裁剪结果。
算法使用四个边界点集合,分别为输入多边形的边界点集合(输入多边形顶点经过一系列处理得到),裁剪多边形的外部边界点集合和内部边界点集合,以及裁剪结果的边界点集合。
2. 算法步骤:weileratherton多边形裁剪算法的具体步骤如下:(1) 初始化:创建输入多边形的边界点集合、裁剪多边形的外部边界点集合和内部边界点集合,并将输入多边形的边界点添加至外部边界点集合中。
(2) 遍历输入多边形的每条边:对于输入多边形的每条边,判断其与裁剪多边形的相交情况。
(3) 相交情况处理:若相交情况为内部相交或外部相交,则根据交点生成新的内部边界点,并添加至相应的边界点集合中。
(4) 构造裁剪结果:根据输入多边形的边界点集合和裁剪多边形的内部边界点集合,生成裁剪结果的边界点集合。
(5) 根据边界点集合构造裁剪结果:根据裁剪结果的边界点集合,绘制裁剪结果多边形。
3. 算法实现:weileratherton多边形裁剪算法的实现可以使用编程语言来完成。
一种常用的实现方法是通过遍历输入多边形的每个边,利用线段与裁剪多边形的边界的相交情况判断是否产生交点,并根据交点生成新的边界点。
具体的实现步骤如下:(1) 初始化输入和裁剪多边形的边界点集合。
(2) 遍历输入多边形的每条边,对于每条边,判断其与裁剪多边形的每条边的相交情况。
(3) 根据相交情况,判断是否生成交点,如果有生成交点,则根据交点生成新的边界点,并添加至相应的边界点集合中。
具有拓扑关系的任意多边形裁剪算法
具有拓扑关系的任意多边形裁剪算法拓扑关系是指在空间中,几何对象之间的相对位置和连接关系。
任意多边形裁剪算法是指对于两个多边形A和B,确定A相对于B的位置关系,并将A裁剪成相对于B的部分。
常用的具有拓扑关系的任意多边形裁剪算法有Sutherland-Hodgman算法和Weiler-Atherton算法。
Sutherland-Hodgman算法是一种简单而直观的裁剪算法,它以多边形A为基础,对多边形A的每条边进行裁剪,最终得到所需的裁剪结果。
算法步骤如下:1.对于裁剪窗口的每条边界,确定其相对于多边形A的左侧。
2.对多边形A的每条边进行裁剪处理,生成新的顶点序列。
3.重复步骤2,直到对所有的边界完成处理。
4.返回裁剪结果。
其中,对于多边形A的每条边进行裁剪处理的具体步骤如下:1.对于多边形A的每条边,判断边的起点和终点是否在裁剪窗口内。
2.如果起点和终点都在窗口内,则将边加入新的顶点序列。
3.如果起点在窗口内,而终点在窗口外,则计算边与窗口边界的交点,并将交点加入新的顶点序列。
4.如果起点在窗口外,而终点在窗口内,则计算边与窗口边界的交点,并将交点作为起点加入新的顶点序列。
5.如果起点和终点都在窗口外,则忽略这条边。
Sutherland-Hodgman算法的优点在于简单易懂,对于凸多边形和凹多边形都适用,但由于其每条边都需要进行裁剪处理,效率较低。
Weiler-Atherton算法是一种基于点集的裁剪算法,它将两个多边形视为点的集合,并通过点集之间的拓扑关系进行裁剪操作。
算法步骤如下:1.对于多边形A和多边形B,找到它们的交点。
2.根据交点和各自的顺时针或逆时针顺序,将交点按序列分别加入多边形A和多边形B的顶点序列。
3.对多边形A和多边形B的顶点序列进行裁剪处理,得到裁剪结果。
Weiler-Atherton算法的优点在于避免了对每条边进行裁剪的操作,对于复杂多边形的裁剪效果好,但实现较为复杂。
以上是具有拓扑关系的任意多边形裁剪算法的简要介绍。
weiler-atherton多边形裁剪算法 -回复
weiler-atherton多边形裁剪算法-回复标题:深入理解Weiler-Atherton多边形裁剪算法一、引言在计算机图形学中,多边形裁剪是一个常见的操作,用于处理复杂的几何形状。
其中,Weiler-Atherton多边形裁剪算法是一种广泛应用的算法,它能够有效地处理任意两个二维多边形之间的相交、相减和相加操作。
本文将详细解析Weiler-Atherton多边形裁剪算法的步骤和原理。
二、预备知识在深入探讨Weiler-Atherton算法之前,我们需要了解一些基本的预备知识。
1. 多边形表示:多边形通常通过其顶点序列来表示,每个顶点由其在笛卡尔坐标系中的(x, y)坐标确定。
2. 十字产品:在二维空间中,两个向量的十字产品可以用来判断它们的方向关系。
如果结果为正,那么一个向量在另一个向量的逆时针方向;如果结果为负,那么一个向量在另一个向量的顺时针方向;如果结果为零,那么两个向量平行或重合。
三、Weiler-Atherton多边形裁剪算法概述Weiler-Atherton算法主要包括以下四个步骤:1. 分析阶段:确定输入多边形的边缘和顶点的关系。
2. 前处理阶段:生成新的边和顶点,以准备后续的裁剪操作。
3. 裁剪阶段:根据分析阶段的结果,进行实际的裁剪操作。
4. 后处理阶段:清理和优化输出的多边形。
四、详细步骤解析1. 分析阶段:在这个阶段,我们需要对输入的两个多边形A和B的所有边进行遍历,确定每条边与其他边的关系。
具体来说,我们需要找到以下四种情况:- 共线边:两条边平行或重合。
- 相交边:两条边在某个点相交。
- 包含边:一条边完全包含在另一条边上。
- 不相交边:两条边不相交且不共线。
对于每种情况,我们都需要记录下相应的信息,以便在后续阶段使用。
2. 前处理阶段:在这个阶段,我们需要根据分析阶段的结果生成新的边和顶点。
具体来说,我们需要执行以下操作:- 对于每一对相交的边,我们在相交点处生成一个新的顶点,并连接这个新顶点与原来的两个顶点,形成两条新的边。
计算机图形学第四讲
11
1001 0001
xL
A
B
C
1000 0000 E 裁剪窗口 0100
xR
第4讲 图形裁剪算法
1010 D yT 0010
7
第4讲 图形裁剪算法
直线裁减的效率策略
首先,通过方法来快速判断完全在窗口内和完全 在窗口外的直线 若是部分在窗口内的情况,则设法减少直线的求 交次数和每次的求交计算量
8
第4讲 图形裁剪算法
直线裁剪算法
Cohen-Sutherland裁剪算法 中点分割算法 梁友栋-Barsky裁剪算法
9
第4讲 图形裁剪算法
Cohen-Sutherland裁剪算法(编码裁剪法)
基本思想:对于每条待裁剪的线段P1P2分三种情 况处理
若P1P2完全在窗口内,则显示该线段 若P1P2完全在窗口外,则丢弃该线段 若线段不满足上述条件,则求线段与窗口边界的交点, 在交点处把线段分为两段,其中一段完全在窗口外, 可舍弃之,然后对另一段重复上述处理
P1
P1
P1
A
Pm
A Pm A B B P2
B Pm
18
P2
P2
第4讲 图形裁剪算法
算法特点
对分辨率为2N×2N的显示器,上述二分过程至多 进行N次 主要过程只用到加法和除法运算,适合硬件实现, 它可以用左右移位来代替乘除法,这样就大大加 快了速度
19
第4讲 图形裁剪算法
梁友栋-Barsky裁剪算法
13
第4讲 图形裁剪算法
自学裁剪100例公式
自学裁剪100例公式自学裁剪公式是学习裁剪技术的基础,掌握了这些公式,可以帮助我们更好地理解裁剪的原理和技巧,提升我们的裁剪技能。
本文将介绍100个常用的自学裁剪公式,通过逐步思考和举例说明,帮助你掌握这些公式。
一、裁剪公式的基础知识在开始介绍具体的裁剪公式之前,我们先来了解一些基础知识。
裁剪公式是通过数学计算来确定裁剪点和线段的位置,以实现准确、精细的裁剪效果。
了解以下几个概念对于理解后续的裁剪公式非常重要:1. 坐标系:裁剪过程中需要使用坐标系来确定点的位置。
常用的坐标系有笛卡尔坐标系和极坐标系。
在笛卡尔坐标系中,x轴和y轴垂直,以原点为基准,用(x, y)表示点的位置;在极坐标系中,以原点为基准,用(r, θ)表示点的位置,其中r表示点到原点的距离,θ表示点与正方向x轴的夹角。
2. 裁剪窗口:裁剪窗口是一个定义了裁剪区域的矩形。
在裁剪时,只有位于裁剪窗口内的图形部分会被显示,位于裁剪窗口外的部分会被裁剪掉。
通常,裁剪窗口的左下角坐标为(w_min_x, w_min_y),右上角坐标为(w_max_x, w_max_y)。
3. 裁剪对象:裁剪对象是指需要进行裁剪操作的图形。
常见的裁剪对象包括线段、多边形、圆等。
二、裁剪公式的具体应用下面我们将具体介绍100个常用的自学裁剪公式,并结合示例进行说明。
这些公式涵盖了不同类型的裁剪对象,帮助你了解裁剪技术的全貌。
1. 线段裁剪公式:- Cohen-Sutherland裁剪算法- Liang-Barsky裁剪算法2. 多边形裁剪公式:- Sutherland-Hodgman裁剪算法- Weiler-Atherton裁剪算法3. 圆裁剪公式:- 椭圆裁剪算法4. 曲线裁剪公式:- Bezier曲线裁剪算法5. 文本裁剪公式:- 文本溢出裁剪算法以线段裁剪公式为例,我们来演示Cohen-Sutherland裁剪算法的应用。
这个算法将线段裁剪为窗口内的可见部分。
(完整版)Weiler-Atherton任意多边形裁剪算法
Weiler-Atherton任意多边形裁剪Sutherland-Hodgeman算法解决了裁剪窗口为凸多边形窗口的问题,但一些应用需要涉及任意多边形窗口(含凹多边形窗口)的裁剪。
Weiler-Atherton多边形裁剪算法正是满足这种要求的算法。
一、Weiler-Atherton任意多边形裁剪算法描述:在算法中,裁剪窗口、被裁剪多边形可以是任意多边形:凸的、凹的(内角大于180o)、甚至是带有内环的(子区),见下图。
裁剪窗口和被裁剪多边形处于完全对等的地位,这里我们称:1、被裁剪多边形为主多边形,记为A;2、裁剪窗口为裁剪多边形,记为B。
主多边形A和裁剪多边形B的边界将整个二维平面分成了四个区域:1、A∩B(交:属于A且属于B);2、A-B(差:属于A不属于B);3、B-A(差:属于B不属于A);4、A∪B(并:属于A或属于B,取反;即:不属于A且不属于B)。
内裁剪即通常意义上的裁剪,取图元位于窗口之内的部分,结果为A∩B。
外裁剪取图元位于窗口之外的部分,结果为A-B。
观察右图不难发现裁剪结果区域的边界由被裁剪多边形的部分边界和裁剪窗口的部分边界两部分构成,并且在交点处边界发生交替,即由被裁剪多边形的边界转至裁剪窗口的边界,或者反之。
由于多边形构成一个封闭的区域,所以,如果被裁剪多边形和裁剪窗口有交点,则交点成对出现。
这些交点分成两类:一类称“入”点,即被裁剪多边形由此点进入裁剪窗口,如图中a、c、e;一类称“出”点,即被裁剪多边形由此点离开裁剪窗口,如图中b、d、f。
二、Weiler-Atherton任意多边形裁剪算法思想:假设被裁剪多边形和裁剪窗口的顶点序列都按顺时针方向排列。
当两个多边形相交时,交点必然成对出现,其中一个是从被裁剪多边形进入裁剪窗口的交点,称为“入点”,另一个是从被裁剪多边形离开裁剪窗口的交点,称为“出点”。
算法从被裁剪多边形的一个入点开始,碰到入点,沿着被裁剪多边形按顺时针方向搜集顶点序列;而当遇到出点时,则沿着裁剪窗口按顺时针方向搜集顶点序列。
Weiler-Atherton任意多边形裁剪算法
Weiler-Atherton任意多边形裁剪Sutherland-Hodgeman算法解决了裁剪窗口为凸多边形窗口的问题,但一些应用需要涉及任意多边形窗口(含凹多边形窗口)的裁剪。
Weiler-Atherton多边形裁剪算法正是满足这种要求的算法。
一、Weiler-Atherton任意多边形裁剪算法描述:在算法中,裁剪窗口、被裁剪多边形可以是任意多边形:凸的、凹的(内角大于180o)、甚至是带有内环的(子区),见下图。
裁剪窗口和被裁剪多边形处于完全对等的地位,这里我们称:1、被裁剪多边形为主多边形,记为A;2、裁剪窗口为裁剪多边形,记为B。
主多边形A和裁剪多边形B的边界将整个二维平面分成了四个区域:1、A∩B(交:属于A且属于B);2、A-B(差:属于A不属于B);3、B-A(差:属于B不属于A);4、A∪B(并:属于A或属于B,取反;即:不属于A且不属于B)。
内裁剪即通常意义上的裁剪,取图元位于窗口之内的部分,结果为A∩B。
外裁剪取图元位于窗口之外的部分,结果为A-B。
观察右图不难发现裁剪结果区域的边界由被裁剪多边形的部分边界和裁剪窗口的部分边界两部分构成,并且在交点处边界发生交替,即由被裁剪多边形的边界转至裁剪窗口的边界,或者反之。
由于多边形构成一个封闭的区域,所以,如果被裁剪多边形和裁剪窗口有交点,则交点成对出现。
这些交点分成两类:一类称“入”点,即被裁剪多边形由此点进入裁剪窗口,如图中a、c、e;一类称“出”点,即被裁剪多边形由此点离开裁剪窗口,如图中b、d、f。
二、Weiler-Atherton任意多边形裁剪算法思想:假设被裁剪多边形和裁剪窗口的顶点序列都按顺时针方向排列。
当两个多边形相交时,交点必然成对出现,其中一个是从被裁剪多边形进入裁剪窗口的交点,称为“入点”,另一个是从被裁剪多边形离开裁剪窗口的交点,称为“出点”。
算法从被裁剪多边形的一个入点开始,碰到入点,沿着被裁剪多边形按顺时针方向搜集顶点序列;而当遇到出点时,则沿着裁剪窗口按顺时针方向搜集顶点序列。
计算机图形学基础期末复习习题(含答案)
一、选择题1. 提出“计算机图形学”的一些基本概念和技术,确定了计算机图形学作为一个崭新科学分支的独立地位,从而被称为图形学之父的是A、Ivan E. SutherlandB、b. Pierre BézieC、Steven A. CoonsD、Bui-Tuong Phong我的答案:A2. 能够利用欧氏几何或方程式方法所表示的有关图形是什么构成要素?A、属性控制要素B、形状构成要素C、边界控制要素D、色彩构成要素我的答案:B3. 计算机图形系统中,既能输入又能输出的设备是A、鼠标B、数字化仪C、触摸屏D、扫描仪我的答案:C4. 图形的属性通常有哪些属性?A、几何B、像素C、点阵D、非几何我的答案:AD5. 以下要素中哪些属于属性控制要素?A、线宽与线型B、填充模式C、颜色材质D、轮廓与形状我的答案:ABC6. ISO图形软件标准有哪些?A、CGIB、CGMC、GKSD、PHIGS我的答案:ABCD7. CRT中完成图像最终显示的重要器件是?A、显示控制器B、显示处理器C、CPUD、阴极射线管我的答案:D8. 在计算机图形系统中利用“电光效应”显示图形的设备是A、等离子体显示板B、薄片光电显示器C、发光二极管D、液晶显示器我的答案:D9. 显示器必须由图形显示子系统中的什么部件进行控制?A、显示控制部件B、CPUC、主存D、系统总线我的答案:A10. 什么是计算机图形系统中显示子系统的心脏?A、显示控制器B、CPUC、显示缓存D、系统总线我的答案:A11. 图形显示技术中的物理分辨率是指A、屏幕分辨率B、显示分辨率C、存储分辨率D、像素分辨率我的答案:A12. 一个交互式计算机图形系统的结构由哪些组成?A、图形软件B、图形硬件C、图形应用数据结构D、图形应用软件我的答案:AB13. 以下哪些属于CRT显示器?A、刷新式随机扫描图形显示器B、存储管式随机扫描图形显示器C、光栅扫描图形显示器D、液晶显示器我的答案:ABC14. 一个好的图形用户接口应具备以下特点。
计算机图形学题目及答案
第一章概述1、计算机图形学研究的是什么?计算机图形学研究的是通过计算机将数据转换为图形,并在专门的设备上输出的原理、方法和技术。
2、计算机图形学处理的图形有哪些?计算机图形学处理的图形有:专题图件、类似于照片的三维逼真图形、实体的视图、抽象图等。
3、二维图形的基本操作和图形处理算法包含哪些内容?对图形的平移、缩放、旋转、镜像、错切等操作,此外还包括二维图形的裁剪、多边形填充以及二维图形的布尔运算(并、交、差)等。
4、什么叫科学计算可视化技术?这是20世纪90年代计算机图形学领域的前沿课题。
研究的是,将科学计算中大量难以理解的数据通过计算机图形显示出来,从而加深人们对科学过程的理解。
例如,有限元分析的结果,应力场、磁场的分布,各种复杂的运动学和动力学问题的图形仿真等。
5、计算机图形学的应用领域有哪些?计算机图形学处理图形的领域越来越广泛,主要的应用领域有:计算机辅助设计与制造(CAD/CAM)、科学计算可视化、地理信息系统与制图、事务管理和办公自动化、虚拟现实系统、过程控制和指挥系统、计算机动画。
6、计算机图形系统的硬件设备有哪些?硬件设备包括主机、输入设备和输出设备。
输入设备通常为键盘、鼠标、数字化仪、扫描仪和光笔等。
输出设备则为图形显示器、绘图仪和打印机。
7、在彩色CRT的荫罩法技术中,说说每个象素的组成结构?谈谈彩色是如何产生的?彩色CRT显示器中,每个象素位置上分布着呈三角形排列的三个荧光彩色点,三个荧光点分别发射红光、绿光和蓝光。
这样的彩色CRT有三支电子枪,分别与三个荧光点相对应,即每支电子枪发出的电子束专门用于轰击某一个荧光点。
屏幕上的荧光点、荫罩板上的小孔和电子枪被精确地安排处于一条直线上,使得由某一电子枪发出的电子束只能轰击到它所对应的荧光点上。
这样,只要调节各电子枪发出电子束的强弱,即可控制各象素中三个荧光点所发出的红、绿、蓝三色光的亮度。
于是我们可以根据彩色中所含红、绿、蓝三色的数量,以不同的强度激励三个荧光点,从而可以产生范围很广的彩色。
多边形裁剪算法
则tu即为三者中离p0最近的 0
点的参数
– 若tu > tl,则可见线段区间 [tl , tu]
1
t3
梁友栋-Barsky算法
始边和终边的确定及交点计算:
令 QL= - △x
DL= x0-xLQR= △xDR= 来自R-x0QB= - △y
DB= y0-yB
QT= △y
DT= yT-y0
交点为
ti= Di / Qi
可弃之。然后对另一段重复上述处理。
1001
1000
1010
0001
0000
0010
0101
0100
0110
–
编码
P1 P3 P4
P2
线段裁剪
Cohen-Sutherland裁剪
如何判定应该与窗口的哪条边求交呢? 编码中对应位为1的边。
• 计算线段P1(x1,y1)P2(x2,y2)与窗口边界的交点 if(LEFT&code !=0) { x=XL; y=y1+(y2-y1)*(XL-x1)/(x2-x1);} else if(RIGHT&code !=0) { x=XR; y=y1+(y2-y1)*(XR-x1)/(x2-x1);} else if(BOTTOM&code !=0) { y=YB; x=x1+(x2-x1)*(YB-y1)/(y2-y1);} else if(TOP & code !=0) { y=YT; x=x1+(x2-x1)*(YT-y1)/(y2-y1);}
直接求交算法
直线与窗口边都 写成参数形式, 求参数值。
Cohen-Sutherland裁剪
• 基本思想:
计算机图形学基础(第二版)部分习题答案
华中科技大学计算机图形学课后习题指导一、第五章5.3 试用中点Bresenham算法画直线段的原理推导斜率为负且大于1的直线段绘制过程(要求写清原理、误差函数、递推公式及最终画图过程)。
分析:这是典型的算法推导题,推导时需要首先确定最大位移方向,然后根据最大位移方向确定候选点,并利用候选点的中点构造判别式;根据判别式确定选择候选点的条件,然后确定判别式的递推公式以及初值。
解:5.7 利用中点Bresenham画圆算法的原理推导第一象限x=y到y=0圆弧段的扫描转换算法(要求写清原理、误差函数、递推公式及最终画图过程)。
分析:这是典型的算法推导题,推导时需要首先确定最大位移方向,然后根据最大位移方向确定候选点,并利用候选点的中点构造判别式;根据判别式确定选择候选点的条件,然后确定判别式的递推公式以及初值。
圆算法应该注意的是算法是从理想圆与坐标轴交点开始的。
解:在x=y到y=0的圆弧中,(R, 0)点比在圆弧上,算法从该点开始。
最大位移方向为y,由(R, 0)点开始,y渐增,x渐减,每次y方向加1,x方向减1或减0。
(注意算法的起始点)设P点坐标(xi, yi),下一个候选点为Pr(xi, yi+1)和Pl(xi-1, yi+1),取Pl和Pr的中点M(xi-0.5, yi+1),设理想圆与y=yi+1的交点Q,构造判别式:d=F(xM, yM)=(x-0.5)2+(y+1)2-R2当d<0时,M在Q点左方,取Pr(xi,yi+1);当d>0时,M在Q点右方,取Pl(xi-1,yi+1);当d=0时,M与Q点重合,约定取Pl(xi-1, yi+1)。
5.11 如图所示多边形,若采用扫描转换算法(ET边表算法)进行填充,试写出该多边形的ET表和当扫描线Y=4时的有效边表(AET表,活性边表)。
分析:改进的有效边表算法是用软件方法实现扫描转换效率较高的算法,它利用了边表来构造有效边表。
需要注意的有以下几点:(1)构造边表时,水平边不需要构造,算法能够获取到水平边的两个端点,配对填充后水平边被填充,因此水平边的数据不参与计算。
大规模等值线图任意多边形裁剪算法
MaxY) L4 L3
L2
L1
Step 1
A
rowB colB
Step 2
B
Step 3
AB
Step 5
Step 4
AB
5 Step 5
rowA colA B
AB
Step3
A Step4
k
RayTracing [13]
Step
1
1
2
L4
AB
P1 P2 P3 P4 L3
5
Y
2
curRow, curCol
Abstract: This paper presents a new fast algorithm for contour clipping against general complex polygon windows. Firstly, the
new algorithm builds the bounding box of the clipping polygons and creates the constraint grid structure. And the algorithm uses the grid structure to pre-clip the contours quickly. Through linked structure to clip the contours, it could get the final clipping result. This paper can realize the method of row scanning to judge the inside and outside attribute by building the linked structure and reduce the counts of segments intersection. Through many experiments, the new algorithm is proved to be very effective and stable.
weiler-atherton多边形裁剪算法 -回复
weiler-atherton多边形裁剪算法-回复什么是Weiler-Atherton多边形裁剪算法?Weiler-Atherton多边形裁剪算法是一种用于计算两个多边形的相交部分的算法。
该算法可以确定两个多边形之间的交集,并生成裁剪后的多边形。
该算法是由Weiler于1977年提出,并由Atherton稍后改进而得名。
它是一种基于点的算法,通过遍历多边形的顶点和边缘来确定它们之间的交集。
Weiler-Atherton多边形裁剪算法非常适用于计算计算机图形学中的裁剪操作,例如裁剪线段、多边形或曲线。
它可以用于裁剪2D和3D场景中的对象,以提高性能并减少渲染的计算量。
下面将为您详细介绍Weiler-Atherton多边形裁剪算法的具体步骤。
步骤1:确定裁剪区域首先,需要定义一个裁剪区域,它是一个多边形,用于裁剪目标多边形。
裁剪区域可以是任何形状,包括凸多边形和凹多边形。
步骤2:确定多边形边缘与裁剪区域的交点接下来,需要遍历目标多边形的所有边缘,并找出它们与裁剪区域的交点。
对于每个边缘,需要检查它是否与裁剪区域相交,并找出相交点的坐标。
步骤3:确定裁剪区域边缘与多边形的交点然后,需要遍历裁剪区域的所有边缘,并找出它们与目标多边形的交点。
同样地,对于每个边缘,需要检查它是否与目标多边形相交,并找出相交点的坐标。
步骤4:确定裁剪多边形的内、外部点在这一步中,需要根据目标多边形和裁剪区域的交点,确定哪些点位于裁剪多边形的内部,哪些点位于外部。
一种常用的方法是使用奇偶规则,根据交点的数量判断点位于多边形内部还是外部。
步骤5:生成裁剪多边形最后,根据确定的内、外部点,生成裁剪后的多边形。
可以通过连接内部点和交点来生成裁剪后的多边形。
需要注意的是,由于Weiler-Atherton多边形裁剪算法是基于点的,因此在处理封闭多边形时需要考虑交点的顺序。
如果交点的顺序不正确,可能会导致生成的裁剪多边形出现错误。
总结Weiler-Atherton多边形裁剪算法是一种用于计算两个多边形相交部分的算法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Weiler-Atherton任意多边形裁剪
Sutherland-Hodgeman算法解决了裁剪窗口为凸多边形窗口的问题,但一些应用需要涉及任意多边形窗口(含凹多边形窗口)的裁剪。
Weiler-Atherton多边形裁剪算法正是满足这种要求的算法。
一、Weiler-Atherton任意多边形裁剪算法描述:
在算法中,裁剪窗口、被裁剪多边形可以是任意多边形:凸的、凹的(内角大于180o)、甚至是带有内环的(子区),见下图。
裁剪窗口和被裁剪多边形处于完全对等的地位,这里我们称:
1、被裁剪多边形为主多边形,记为A;
2、裁剪窗口为裁剪多边形,记为B。
主多边形A和裁剪多边形B的边界将整个二维平面分成了四个区域:
1、A∩B(交:属于A且属于B);
2、A-B(差:属于A不属于B);
3、B-A(差:属于B不属于A);
4、A∪B(并:属于A或属于B,取反;即:不属于A且
不属于B)。
内裁剪即通常意义上的裁剪,取图元位于窗口之内的部
分,结果为A∩B。
外裁剪取图元位于窗口之外的部分,结果为A-B。
观察右图不难发现裁剪结果区域的边界由被裁剪多边形的
部分边界和裁剪窗口的部分边界两部分构成,并且在交点处边
界发生交替,即由被裁剪多边形的边界转至裁剪窗口的边界,
或者反之。
由于多边形构成一个封闭的区域,所以,如果被裁
剪多边形和裁剪窗口有交点,则交点成对出现。
这些交点分成两类:
一类称“入”点,即被裁剪多边形由此点进入裁剪窗口,如图中a、c、e;
一类称“出”点,即被裁剪多边形由此点离开裁剪窗口,如图中b、d、f。
二、Weiler-Atherton任意多边形裁剪算法思想:
假设被裁剪多边形和裁剪窗口的顶点序列都按顺时针方向排列。
当两个多边形相交时,交点必然成对出现,其中一个是从被裁剪多边形进入裁剪窗口的交点,称为“入点”,另一个是从被裁剪多边形离开裁剪窗口的交点,称为“出点”。
算法从被裁剪多边形的一个入点开始,碰到入点,沿着被裁剪多边形按顺时针方向搜集顶点序列;
而当遇到出点时,则沿着裁剪窗口按顺时针方向搜集顶点序列。
按上述规则,如此交替地沿着两个多边形的边线行进,直到回到起始点。
这时,收集到的全部顶点序列就是裁剪所得的一个多边形。
由于可能存在分裂的多边形,因此算法要考虑:将搜集过的入点的入点记号删去,以免重复跟踪。
将所有的入点搜集完毕后算法结束。
三、Weiler-Atherton任意多边形裁剪算法步骤:
1、顺时针输入被裁剪多边形顶点序列Ⅰ放入数组1中。
2、顺时针输入裁剪窗口顶点序列Ⅱ放入数组2中。
3、求出被裁剪多边形和裁剪窗口相交的所有交点,并给每个交点打上“入”、“出”标记。
然后将交点按顺序插入序列Ⅰ得到新的顶点序列Ⅲ,并放入数组3中;
同样也将交点按顺序插入序列Ⅱ得到新的顶点序列Ⅳ,放入数组4中;
4、初始化输出数组Q,令数组Q为空。
接着从数组3中寻找“入”点。
如果“入”点没找到,程序结束。
5、如果找到“入”点,则将“入”点放入S中暂存。
6、将“入”点录入到输出数组Q中。
并从数组3中将该“入”点的“入”点标记删去。
7、沿数组3顺序取顶点:
如果顶点不是“出点”,则将顶点录入到输出数组Q中,流程转第7步。
否则,流程转第8步。
8、沿数组4顺序取顶点:
如果顶点不是“入点”,则将顶点录入到输出数组Q中,流程转第8步。
否则,流程转第9步。
9、如果顶点不等于起始点S,流程转第6步,继续跟踪数组3。
否则,将数组Q输出;
流程转第4步,寻找可能存在的分裂多边形。
算法在第4步:满足“入”点没找到的条件时,算法结束。
算法的生成过程见下图所示。
四、Weiler-Atherton任意多边形裁剪算法实现:
1、算法在实现中,需要用到六个数组,分别用来存放:被裁剪多边形、裁剪窗口、交点数组、插入交点后的被裁剪多边形、插入交点后的裁剪窗口、输出多边形。
2、由于交点具有“入”、“出”标记,因此凡与交点有关的数组都要采用结构数组类型:
struct point
{
double x;
double y;
int flag;
}交点数组,数组3,数组4;
标记flag有三种状态:
0:非交点;
1:“入”点;
-1:“出”点。
3、求交点时,利用被裁剪多边形的各边去对裁剪窗口的各边求交点:
for(被裁剪多边形的各边)
{
…;
for(裁剪窗口的各边)
{
求有效交点;放入交点数组;
…;
}
}
4、交点的顺序插入,意味着要对交点数组排序后再分别插入到数组1、数组2的相应位置上。
5、所谓找“入”点、“出”点,必须根据flag找寻满足条件的顶点位置。
不光数组3中要找“入”点、“出”点,而且找到后还要转到数组4的相应顶点位置处。
对数组4的处理也同上。
这种处理在本算法中大量遇到。
五、Weiler-Atherton任意多边形裁剪算法演示:(略)
六、Weiler-Atherton任意多边形裁剪算法特点:
1、裁剪窗口可以是矩形、任意凸多边形、任意凹多边形。
2、可实现被裁剪多边形相对裁剪窗口的内裁或外裁,即保留窗口内的图形或保留窗口外的图形,因此在三维消隐中可以用来处理物体表面间的相互遮挡关系。
3、裁剪思想新颖,方法简洁,裁剪一次完成,与裁剪窗口的边数无关。
七、Weiler-Atherton任意多边形裁剪算法小结:
前面介绍的是内裁算法,即保留裁剪窗口内的图形。
而外裁算法(保留裁剪窗口外的图形)同内裁算法差不多。
外裁算法与内裁算法不同的是:
1、从被裁剪多边形的一个“出点”开始,碰到出点,沿着被裁剪多边形按顺时针方向搜集顶点序列;
2、而当遇到“入点”时,则沿着裁剪窗口按逆时针方向搜集顶点序列。
按上述规则,如此交替地沿着两个多边形的边线行进,直到回到起始点为止。
这时,收集到的全部顶点序列就是裁剪所得的一个多边形。
由于可能存在分裂的多边形,因此算法要考虑:将搜集过的“出点”的出点记号删去,以免重复跟踪。
将所有的出点搜集完毕后算法结束。
Weiler-Atherton算法的的设计思想很巧妙,裁剪是一次完成,不象Sutherland-Hodgman 多边形裁剪算法,每次只对裁剪窗口的一条边界及其延长线进行裁剪,如裁剪窗口有n条边,则要调用n次S-H算法后才能最后得出裁剪结果。
但Weiler-Atherton算法的编程实现比Sutherland-Hodgman算法稍难,主要难在入、出点的查寻以及跨数组搜索上。