在裁剪算法中,有许多技术,如Cohen-Sutherland,用于2D线裁剪的Cyrus-Beck算法,还有许多其他技术用于圆和多边形。但是我正在寻找这样一种方法来将线条剪切到c ++中的三角形窗口,如图所示:
所以我有三种情况,第一种是线条在必须绘制的三角形内部,第二种情况是在三角形外侧不能绘制,第三种情况是线条在三角形内部有一个终点,第二种情况外面需要修剪到三角形边框,那么在处理性能方面做什么的最佳方法是什么?!
答案 0 :(得分:3)
这里需要的基本原则是计算三角形每一边的交点,并确定交点是在边缘内还是在拐角之外(交点算法应该给你)。
基本上,线段AB与三角形侧面CD的交点将为您提供交叉时间,其中A和C表示时间= 0,B和D表示时间1.两个线段的0到1之间的任何值意味着它们相交,你需要修改你正在测试的线段,使三角形外面的点放在交点上。超出该范围的任何值意味着您可以忽略三角形的那一侧。 (线段完全在三角形之外,或者你将用其他两边夹住它。)
你只是依次为每一方做到这一点。