只讲原理,代码需要自己构思、设计,这种算法只有自己写出来才能真正的记在脑子里。
①:正方形区域为显示区域,该三角形为经典的多次裁剪三角形。
三角形与显示区域的相交情况有好几种:三角形全部在显示区域内、外,部分在显示区域内;三角形的边框并没有和显示框相交,却有显示部分。
网上也有一些相关的算法,但是总结的不是很正确,很清楚。
正确的方法是用每条边界去裁剪三角形,留下的继续裁剪。直到每条边都去裁剪过。
顺序无所谓。
在这里需要判断点在边界的内外,很好处理。
裁剪的时候是一条边一条边的裁,两端点一内一外时裁剪,外点由新点(此边与边界的交点)替换。此处需注意,裁剪后的形状比之前的形状多一条边,就是多一个顶点,写代码的时候需仔细的设计代码。
一个三角形被矩形裁剪完后,出现的形状里,边数最多的为七边形,7=3+4,预计生成的多边形顶点数为源形状的顶点数+4。
好了,理论讲完了。