您好,欢迎访问三七文档
1004131106马梦瑶《计算机图形学》实验报告2015年11月25日任课教师:严红平第1页多边形裁剪实验报告一、实验内容1.实验目的:理解多边形裁剪算法的基本思想,掌握多边形裁剪算法及其特点。能够应用多边形裁剪算法,编程实现裁剪指定多边形的功能。2.常见的解决方法以及各方法的优点:a)Sutherland-Hodgman(逐边)裁剪算法优点:原理简单实用。缺点:对于凸多边形的裁剪将显示出一条多余的裁剪边界直线。这种情况在裁剪后的多边形有两个或多个分离部分的时候出现,因为只有一个输出顶点表,所以表中的最后一个顶点总是连着第一个顶点。二、试验方法1.Sutherland-Hodgman裁剪算法所用方法的原理采用分割处理策略,将多边形关于矩形窗口的裁剪分解为多边形关于窗口四边所在直线的裁剪。顺序是左上右下,前边的结果永远是后边的输入。一次用窗口的一条边裁剪多边形,考虑窗口的一条边以1004131106马梦瑶《计算机图形学》实验报告2015年11月25日任课教师:严红平第2页及其延长线构成的裁剪线,该线把平面分为两个部分:可见一侧和不可见一侧。对于两个端点均在可见一侧,则输出一个端点;对于两个端点均在不可见一侧,则输出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处理完毕,算法结束。1004131106马梦瑶《计算机图形学》实验报告2015年11月25日任课教师:严红平第3页三、实验结果分析1.实验环境:windowsxp操作系统、主频、内存、VC2.实验结果:3.分析解释实验结果初始化的背景为白色glClearColor(1.0,1.0,1.0,0.0);两个多边形的线段颜色设置为黑色glColor3f(0.0,0.0,0.0);将裁剪出的多边形设置为红色glColor3f(1.0,0.0,0.0);然后利用循环进行裁剪。1004131106马梦瑶《计算机图形学》实验报告2015年11月25日任课教师:严红平第4页四、结论与展望对于上述算法仅用一条裁剪边对多变性进行裁剪,得到一个顶点序列,作为下一条裁剪边处理过程的输入,对于美一条裁剪边,算法过程相同,只是判断点在窗口的哪一侧以及求线段SP与才简便的交点算法应该随之改变。算法适用于凸多边形,但是对于凹多边形的裁剪,将出现一条多余的裁剪线段,为了解决这个问题,可以吧凹多边形分割成若干个凸多边形然后分别处理各个凸多边形。或者可以修改本算法,沿着任何一个裁剪窗口边检查顶点表,正确的连接顶点对。或者采用Weiler-Atherton算法.
本文标题:多边形裁剪报告
链接地址:https://www.777doc.com/doc-2504937 .html