python 直线求交,python中两条直线的起点和终点相交

这个问题比我预料的要有趣。对我来说,最初的解决方案看起来太复杂了。我不相信复杂,所以我自己尝试了一种解决方法,这个方法更简单,而且很容易证明是正确的。我应该把比较放在小于或等于,而不是小于。在四处玩来比较两种速度后,我无意中,就只测试了两种情况,发现原来的解决方案有缺陷。我还发现,尽管我的解决方案——加上刚才提到的修正——比提议的解决方案慢。在

建议的解决方案在24个可能的案例中有5个失败。我让作者来纠正他的功能。我甚至都没试着确定他的错误发生在哪里。但是我提供了以下函数,用于测试。在

有一些工具可以测试代码覆盖率。这个问题和解决方案的有趣之处在于,完全测试解决方案的覆盖范围在粒度上需要小于行级别。在

在下面的代码中,将建议的函数传递给test_intersection。如果24个可能的案例中有一个失败,它将抛出一个异常。我的解决方案和在内部使用元组的修改都通过了24个。原来的解决方案中有5个失败了。在发布这篇文章之后,我意识到还有一些额外的案例可以添加。([3,4],[3,7]),([3,7],[3,7]),([4,7],[3,7]),以及行的“间隔”向后的变体。在def test_intersection (f):

assert not f ([1,2], [3,7])

assert f ([1,3], [3,7])

assert f ([1,4], [3,7])

assert f ([4,5], [3,7])

assert f ([4,8], [3,7])

assert f ([7,9], [3,7])

assert not f ([8,9], [3,7])

assert not f ([2,1], [3,7])

assert f ([3,1], [3,7])

assert f ([4,1], [3,7])

assert f ([5,4], [3,7])

assert f ([8,4], [3,7])

assert f ([9,7], [3,7])

assert not f ([9,8], [3,7])

assert not f ([1,2], [7,3])

assert f ([1,3], [7,3])

assert f ([1,4], [7,3])

assert f ([4,5], [7,3])

assert f ([4,8], [7,3])

assert f ([7,9], [7,3])

assert not f ([8,9], [7,3])

assert not f ([2,1], [7,3])

assert f ([3,1], [7,3])

assert f ([4,1], [7,3])

assert f ([5,4], [7,3])

assert f ([9,7], [7,3])

assert not f ([9,8], [7,3])

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Python求网络两条起点终点一致的路径所包围的面积,你可以使用以下步骤: 1. 确定两条路径的起点终点,并将其表示为坐标点。假设路径1的起点是(x1, y1),终点是(x2, y2),路径2的起点是(x3, y3),终点是(x4, y4)。 2. 根据路径的坐标点,连接相邻的点以形成线段。你可以使用Python线段数据结构来表示这些线段。 3. 判断两条路径是否相交。可以使用线段相交的几何算法来判断两条线段是否相交。如果相交,则可以继续进行下一步;如果不相交,则两条路径没有形成封闭区域,无法计算面积。 4. 如果两条路径相交,将两个相交点和路径的起点终点连接,形成一个封闭区域。你可以使用Python的多边形数据结构来表示这个封闭区域。 5. 使用多边形的面积计算方法来计算封闭区域的面积。可以使用Python的几何计算库,如Shapely来计算多边形的面积。 下面是一个简单的示例代码,演示了如何使用Shapely库来计算两条路径包围的面积: ```python from shapely.geometry import LineString, Polygon # 定义路径的起点终点坐标 path1_start = (x1, y1) path1_end = (x2, y2) path2_start = (x3, y3) path2_end = (x4, y4) # 创建线段对象 line1 = LineString([path1_start, path1_end]) line2 = LineString([path2_start, path2_end]) # 判断两条线段是否相交 if line1.intersects(line2): # 计算相交点 intersection = line1.intersection(line2) # 创建多边形对象,包围两条路径和相交点 polygon = Polygon([path1_start, path1_end, intersection, path2_end, path2_start]) # 计算多边形的面积 area = polygon.area print("两条路径包围的面积为:", area) else: print("两条路径没有形成封闭区域,无法计算面积。") ``` 请注意,上述代码只是一个简单的示例,实际情况可能需要根据你的数据结构和具体需求进行适当的调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值