0

一条线在此定义为一系列 2D 节点点。现在,我有两条这样的行AB.

A=[(0, 0), (1, 1), (2.1, 3), (4,7)]
B=[(2, 0), (2, 6)]

当将它们画在纸上时,可以很容易地看到两条线相交的点不是A或的节点成员B

不过,两者AB 确实跨越了这一点。也就是说,该点确实位于 和 上AB只是不与节点点碰撞。

我现在希望找到交点。

(再次温馨提示:交点在A和上B,但可能不是节点)

我现在想出的是使用多项式来拟合每个点序列。这样,我可以求解与方程的交集。然而,这对我自己来说似乎是一种相当愚蠢的方式。

有什么聪明的方法吗?

我说的是 Python,但也非常欢迎任何通用答案。

4

3 回答 3

0
于 2013-11-08T16:30:16.577 回答
0

有 2 个点X(x1, x2), Y(y1, y2),您可以确定直线方程,例如:

(x-x1)/(x2-x1) = (y-y1)/(y2-y1)

对线路 A 和线路 B 执行此操作。

您将获得线

A: y = m1*x+n1
B: y = m2*x+n2

现在,您只需要找到符合上述两个方程的 y 和 x 的值。

于 2013-11-08T16:13:46.337 回答
0
for i in range(0, len(A), 2):
    line1 = A[i:i+2]
    for j in range(0, len(B), 2):
        line1 = A[j:j+2]
        point_of_intersect = intersection(line1, line2)
        if point_of_intersect:
            print point_of_intersect

其中函数intersection是根据此 Wikipedia 条目定义的。

于 2013-11-08T16:09:03.670 回答