2013-04-10 42 views
1

在剪裁算法中有许多技术,例如Cohen-Sutherland,Cyrus-Beck算法用于2D线裁剪也有很多其他的圆形和多边形。但我在寻找这样的方式夹线到C++中的三角窗像图像解释波纹管: enter image description here剪切线为三角形C++

所以我3箱子第一个是该行必须绘制三角形内,第二种情况是在不能绘制的三角形的外侧,第三种情况下,该线在三角形内部具有终点,并且第二种情况需要被裁剪成三角形边界,那么对此做出最佳的方式是什么处理性能?!

+1

第四种情况是线的两端都在三角形外面,但是线与三角形边界交叉。 (想想案例1,但在两个方向上延伸线)你关心这种情况吗? – jkerian

+0

你谈论的这个案例属于其他案例中的一个,或者属于逻辑。 – Alyafey

+1

点产品,大量的点产品。 :) –

回答

3

这里需要的基本原理是计算三角形各边的交点,并计算交点是在边界内还是在角点之外(交点算法应该给你的)。

基本上,线段AB与三角形边CD的交点将给出一个交点时间,其中A和C表示时间= 0,B和D表示时间为1。线段意味着它们相交,并且您需要修改正在测试的线段,以使三角形之外的点位于交点上。超出该范围的任何值意味着您可以忽略该三角形的那一侧。 (或者线段完全位于三角形之外,或者您将其与另外两侧夹在一起。)

您只需对每一边依次执行此操作。