在裁剪算法中有许多技术,例如 Cohen–Sutherland,Cyrus–Beck 算法也适用于 2D 线裁剪,还有许多其他技术适用于 Circle 和 polygon。但我正在寻找一种在 c++ 中将线剪裁到三角形窗口的方法,如下图所示:
所以我有三种情况,第一种是线在必须绘制的三角形内部,第二种情况是在不能绘制的三角形外部,第三种情况是线的终点在三角形内部,第二种情况是在三角形外部需要将其剪裁到三角形边框,那么就处理性能而言,最好的方法是什么?!
最佳答案
您在这里需要的基本原则是计算三角形每条边的交点,并计算出交点是在边内还是在角外(交点算法应该给您)。
基本上,线段 A-B 与三角形边 C-D 的交点将为您提供交点时间,其中 A 和 C 表示时间 = 0,B 和 D 表示时间为 1。两条线段的任何值都在 0 和 1 之间意味着它们相交,您需要修改要测试的线段,使三角形外的点位于交点上。该范围之外的任何值都意味着您可以忽略三角形的那一侧。 (要么线段完全在三角形外,要么用其他两条边将其夹住。)
您只需依次对每一侧执行此操作即可。
关于c++ - 剪裁线到三角形C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15931404/