您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在python中找到线与圆的交点的最有效方法是什么?

在python中找到线与圆的交点的最有效方法是什么?

我想也许您的问题是理论上如何以最快的方式做到这一点。但是,如果您想快速执行此操作,则应真正使用以C / C ++编写的内容

我已经习惯了Shapely,所以我将提供一个如何使用此库的示例。有许多用于python的几何库。我将在此答案的结尾列出它们。

from shapely.geometry import LineString
from shapely.geometry import Point

p = Point(5,5)
c = p.buffer(3).boundary
l = LineString([(0,0), (10, 10)])
i = c.intersection(l)

print i.geoms[0].coords[0]
(2.8786796564403576, 2.8786796564403576)

print i.geoms[1].coords[0]
(7.121320343559642, 7.121320343559642)

在Shapely中有点反直觉的是,圆是具有缓冲区的点的边界。这就是为什么我这样做p.buffer(3).boundry

交集i也是一个几何形状的列表,在这种情况下它们都是点,这就是为什么我必须从中获得它们的原因i.geoms[]

还有另一个Stackoverflow问题,针对那些感兴趣的人来介绍有关这些库的详细信息。

编辑,因为评论

Shapely基于GEOS(trac.osgeo.org/geos),它是用C++构建的,并且比您用python本地编写的任何东西都要快得多。SymPy似乎基于mpmath(mpmath.org),后者也似乎是python,但似乎其中集成了许多非常复杂的数学。实现自己可能需要大量工作,并且可能不会像GEOS C ++实现那样快。

python 2022/1/1 18:34:53 有240人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶