问题描述
挑战:
我们有两行。
蓝线通过点:(20,100),(25,44.44),(30,30),(35,20),(40,0),(45,(50,( 55,(60,0)
粉色线穿过点:(20,00),33.33),64.44),(55,100)
没有任何人工干预,我想知道它们相交的点。比如图中的交点是(37.5,10)
记住:程序的唯一输入是两条线的点集。需要的输出是两条线的交点。
解决方法
失败的事情:
-
我试图找到可以生成两条线(都通过两个以上的点)的交点的Python库。找不到。
-
我试图为通过两个以上点的线找到一个数学方程生成器。然后我想我将能够找到这两个方程的交集。非常复杂,有很多多项式方程!
-
我在互联网上搜索的大多数地方都能够为我提供仅通过两点的两条直线的交点。然而,如上图所示,两条线都通过了大约 9 个点。
正确的解决方案:
好吧,可以称其为无赖,但解决方案并不像我想象的那么复杂。 现在仔细看图片,可以这样解读:
与其称其为从许多点而不仅仅是两点通过的线,不如称其为通过两点的线。然后它又经过另外两个点。然后另外两点..依此类推..
网上有很多解决方案可以找到通过 2 个点的线的交点。这里的问题只是因为两条线都经过 N 个点 (N>2) 的解释。
因此,答案是这样计算的
步骤 1:检查 line1 与前两个点 [(20,100),(25,44.44)] 和 line2 与前两个点 [(20,0.0),0.0)] 的交点
第 2 步:检查 line1 与下两个点 [(25,44.44),(30,30)] 和 line2 与前两个点 [(25,0)] 的交点
第 3 步:对整个点循环重复此过程,直到到达最后一个点。
输出:程序能够正确产生(37.5,10)!
PS:如果需要,我可以分享这个代码。