多边形裁剪报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多边形裁剪实验报告
一、实验内容
1.实验目的:
●理解多边形裁剪算法的基本思想,掌握多边形裁剪算法及其特
点。
●能够应用多边形裁剪算法,编程实现裁剪指定多边形的功能。
2.常见的解决方法以及各方法的优点:
a)Sutherland-Hodgman(逐边)裁剪算法
优点:原理简单实用。
缺点:对于凸多边形的裁剪将显示出一条多余的裁剪边界直线。这种情况在裁剪后的多边形有两个或多个分离部分的时候出现,因为只有一个输出顶点表,所以表中的最后一个顶点总是连着第一个顶点。
二、试验方法
1.Sutherland-Hodgman裁剪算法所用方法的原理
采用分割处理策略,将多边形关于矩形窗口的裁剪分解为多边形关于窗口四边所在直线的裁剪。顺序是左上右下,前边的结果永远是后边的输入。一次用窗口的一条边裁剪多边形,考虑窗口的一条边以
及其延长线构成的裁剪线,该线把平面分为两个部分:可见一侧和不可见一侧。对于两个端点均在可见一侧,则输出一个端点;对于两个端点均在不可见一侧,则输出0个端点;如果起始端点在可见一侧,终止端点在不可见一侧,则输出线段与裁剪边的交点;如果起始端点在不可见一侧,终止端点在可见一侧,则输出线段与裁剪边的交点以及终止端点。
程序设计思路
(1)输入第一个顶点S,输入第一个顶点F
(2)判断定点是否输入完毕,如果输入完毕,F—>P,处理线段SP
(3)如果顶点未输入完毕,则输入顶点P,处理线段SP,P->S,然后再
判断顶点是否输入完毕,转到第二步
(4)处理线段SP,判断SP是否与裁剪线相交,如果与裁剪线相交,
则求出SP与裁剪线的交点
(5)输出交点
(6)如果SP与裁剪线不相交,则判断P是否位于可见一侧,如果P
位于可见一侧,则输出顶点P
(7)如果P位于不可见一侧,则直接舍弃P
(8)线段SP处理完毕,算法结束。
三、实验结果分析
1.实验环境:
windows xp操作系统、主频、内存、VC
2.实验结果:
3.分析解释实验结果
初始化的背景为白色glClearColor(1.0,1.0,1.0,0.0);两个多边形的线段颜色设置为黑色glColor3f(0.0,0.0,0.0);将裁剪出的多边形设置为红色glColor3f(1.0,0.0,0.0); 然后利用循环进行裁剪。
四、结论与展望
对于上述算法仅用一条裁剪边对多变性进行裁剪,得到一个顶点序列,作为下一条裁剪边处理过程的输入,对于美一条裁剪边,算法过程相同,只是判断点在窗口的哪一侧以及求线段SP与才简便的交点算法应该随之改变。算法适用于凸多边形,但是对于凹多边形的裁剪,将出现一条多余的裁剪线段,为了解决这个问题,可以吧凹多边形分割成若干个凸多边形然后分别处理各个凸多边形。或者可以修改本算法,沿着任何一个裁剪窗口边检查顶点表,正确的连接顶点对。或者采用Weiler-Atherton算法.