C++ 将直线裁剪到三角形c++;
在裁剪算法中有许多技术,例如用于二维直线裁剪的Cohen–Sutherland、Cyrus–Beck算法,还有许多其他用于圆和多边形的技术。但我正在寻找这样一种方法,将线剪辑成三角形窗口,就像在C++中解释的那样:C++ 将直线裁剪到三角形c++;,c++,graphics,C++,Graphics,在裁剪算法中有许多技术,例如用于二维直线裁剪的Cohen–Sutherland、Cyrus–Beck算法,还有许多其他用于圆和多边形的技术。但我正在寻找这样一种方法,将线剪辑成三角形窗口,就像在C++中解释的那样: 所以我有三种情况,第一种情况是直线在三角形内,必须画,第二种情况是在三角形外,不能画,第三种情况是直线在三角形内有一个端点,第二种情况是在三角形外,需要修剪到三角形的边界,那么,在处理性能方面,什么是最好的方法呢 这里需要的基本原则是计算三角形每边的交点,并计算出交点是在边内还是在
所以我有三种情况,第一种情况是直线在三角形内,必须画,第二种情况是在三角形外,不能画,第三种情况是直线在三角形内有一个端点,第二种情况是在三角形外,需要修剪到三角形的边界,那么,在处理性能方面,什么是最好的方法呢 这里需要的基本原则是计算三角形每边的交点,并计算出交点是在边内还是在角外(交点算法应该给出) 基本上,线段A-B与三角形边C-D的交点将给出交点时间,其中A和C表示时间=0,B和D表示时间1。两条线段的任何介于0和1之间的值都表示它们相交,您需要修改正在测试的线段,以便三角形外的点放置在交点上。任何超出该范围的值都意味着您可以忽略三角形的那一侧。(要么线段完全位于三角形外部,要么用其他两条边将其剪裁。)
您只需依次对每一侧执行此操作。第四种情况是,直线的两端都在三角形之外,但直线穿过三角形边界。(想想案例1,但把线向两个方向延伸)你关心这个案例吗?你说的这个案例属于其他两个案例中的一个,也属于逻辑中的一个。点积,很多点积。:)不要忘记边界情况,其中直线与三角形的一条边完全相同。@jkerian还有另一条,其中线段位于其中一条边上。:)