我有两条不平行的线(XA和YB),我需要将它们延伸到曲线段(PQ)。线由(x,y)点的阵列组成。 A是XA线的最后一点,B是YB线的最后一点。 P和Q是曲线的边缘点。
现在,我需要将点A扩展到P,将点B扩展到Q。有没有办法找到PQ曲线的正确对应点,以便A-> P和B-> Q而不是A-> Q和B-> P,在后一种情况下,延长线将相交,这不应该发生。
以前,我尝试过一个简单的布尔值,但这是不正确的。
我尝试过的事情
if(abs(A.x() - P.x()) < abs(B.x() - P.x())
// extend A to P
// extend B to Q
else
// extend A to Q
// extend B to P
上面的方法不适用于下面显示的图像,因为然后将A线延伸到点Q,将B线延伸到P(用红色绘制的扩展名)。
解决方案应如下所示;
任何帮助将不胜感激。
答案 0 :(得分:1)
一种实现方式:
尝试一个变体,检查两个片段是否相交,如果相交,则为另一变体。
例如尝试[AP], [BQ]
。检查它们是否相交。如果没有,那就是你的配置。否则,配置为[AQ], [BP]
要检查两个线段是否相交只是数学。检查来自math.stackexchange的帖子:https://math.stackexchange.com/questions/149622/finding-out-whether-two-line-segments-intersect-each-other