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

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

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

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

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

from shapely.geometry import LineStringfrom shapely.geometry import Pointp = Point(5,5)c = p.buffer(3).boundaryl = 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问题,针对那些感兴趣的人来介绍有关这些库的详细信息。

  • 象征
  • CGAL Python绑定
  • 欧几里德
  • PythonOCC
  • 几何简单

编辑,因为评论:

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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5631835.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存