1

在裁剪算法中,有许多技术,例如用于 2D 线裁剪的 Cohen-Sutherland、Cyrus-Beck 算法,还有许多其他用于圆形和多边形的技术。但我正在寻找一种将线条剪辑到 C++ 中的三角形窗口的方法,如下图所示: 在此处输入图像描述

所以我有三种情况,第一种是线在必须绘制的三角形内部,第二种情况在三角形外部,不能绘制,第三种情况线在三角形内部有一个端点,第二种在外部需要绘制被剪裁到三角形边框,那么就处理性能而言,最好的方法是什么?!

4

1 回答 1

3

您在这里需要的基本原则是计算三角形每一边的交点,并计算出交点是在边缘内部还是在角落之外(相交算法应该给你)。

基本上,线段 AB 与三角形边 CD 的交点将为您提供相交时间,其中 A 和 C 代表时间 = 0,B 和 D 代表时间 1。两条线段的 0 和 1 之间的任何值都意味着它们相交,并且您需要修改您正在测试的线段,以便将三角形外部的点放置在交点上。超出该范围的任何值都意味着您可以忽略三角形的那一侧。(要么线段完全在三角形之外,要么你将它与其他两侧夹住。)

您只需依次为每一侧执行此操作。

于 2013-04-10T18:26:01.900 回答