找到给定两条线的交点,每条线都经过两个以上的点

Find intersection of given two lines each passing through more than two points

挑战:

我们有两条线路。

蓝线经过点:(20,100), (25,44.44), (30,30), (35,20), (40,0), (45,0), (50,0) , (55,0), (60,0)

粉色线穿过点:(20,00), (25,0), (30,0), (35,0), (40,20), (45,33.33), (50, 64.44), (55,100), (60,100)

无需任何人工干预,我想知道它们相交的点。例如图中交点为(37.5,10)

记住:程序的唯一输入是两条线的点集。需要的输出是两条线的交点。

没有解决的事情:

  1. 我试图找到 Python 的库,它可以生成两条线的交点(都经过两个以上的点)。找不到。

  2. 我试图为通过两个以上点的线找到一个数学方程式生成器。然后我想我能找到这两个方程的交集。有很多多项式方程变得非常复杂!

  3. 我在互联网上搜索的大多数地方都能够给我只通过两个点的两条直线的交点。然而,如上图所示,两条线都经过了大约 9 个点。

正确解法:

好吧,不管怎么说都是无赖,但解决方案并不像我想象的那么复杂。 现在如果你仔细看图片,你可以这样解读:

与其说它是从很多点而不仅仅是两个点的线,不如说它是通过两个点的线。然后它正在通过另外两个点。然后还有两点..等等..

网上有很多解决方案可以找到通过 2 个点的线的交点。这里的问题只是因为两条线都经过 N 个点 (N>2) 的解释。

因此,答案是这样计算的

第 1 步:检查 line1 与前两个点 [(20,100),(25,44.44)] 和 line2 与前两个点 [(20,0.0),(25,0.0)]

第 2 步:检查 line1 与下两个点 [(25,44.44),(30,30)] 以及 line2 与前两个点 [(25,0.0),(30,0)] 的交点

第 3 步:对整个点循环重复此过程,直到到达最后一个点。

输出:程序能够正确生成 (37.5,10)!

PS: 如果需要我可以分享代码。