python中好的几何库?[关闭]


97

我正在寻找一个良好而完善的库,用于python中的几何处理和评估,例如:

  • 评估2D和3D中两条线之间的交点(如果存在)
  • 评估一个平面和一条线之间的相交点,或两个平面之间的相交线
  • 评估线与点之间的最小距离
  • 找到通过点的平面的正交线
  • 旋转,平移,镜像一组点
  • 找出由四个点定义的二面角

我有一本关于所有这些操作的简书,虽然可以实现,但不幸的是我没有时间,所以我会喜欢做这本书的图书馆。大多数操作对于游戏目的都是有用的,因此我确信可以在游戏库中找到其中一些功能,但是我不希望不包含不需要的功能(例如图形)。

有什么建议 ?谢谢


如果你只有2D得很好,那么你可以看看这个
Pithikos

Answers:


35

也许看看SymPy


2
它并不能真正满足我的要求,但这确实是一个很酷的项目,所以我接受您的回答,这也是对未来的有趣建议(因为SymPy具有几何模块,并且有大量开发人员)
Stefano Borini,2009年

1
仅可悲的是2d。并不是真正的建设性几何引擎。
meawoppl

3
SymPy的几何模块也可能非常非常慢。由于它是为进行符号数学而设计的,因此它倾向于使用精确的表达式而不是近似的浮点值。给定几何计算中通常涉及的平方根数量,您可以想象这些表达式如何变得很大而又很慢。
2015年

3
更新到SymPy现在也包含3D库
control_fd

感谢您的回答。我正在尝试SymPy。第一次实验执行起来似乎很慢-即使对于简单的2D对象也是如此。知道是否适合实时处理几何吗?谢谢。
比尔

27

Shapely是流行的GEOS库周围的一个不错的python包装器。


6
似乎非常关注GIS数据处理,而不是纯粹的“数学几何”(可以这么说)
Stefano Borini,2009年

2
它肯定是为GIS社区创建的,但是故意忽略了地理投影,因此可以用作通用的欧式几何库。我在一个新生的计算机游戏项目中就大量使用它,并且效果很好。
乔纳森·哈特利2009年

15
关于3D几何的说法:“在构造实例时可以使用第三个z坐标值,但对几何分析没有影响。所有操作都在xy平面中执行。”
sebpiq 2012年

3
上面的评论花了我大约半个小时的时间才找到答案。确实令人不安。
meawoppl

2
当问题专门要求3D时,为什么只选一张票?
Jamie Bull


10

CGAL也具有Python绑定


3
最新版本是2009年,但它们似乎不完整。谁能说他们最近使用过它们,并且他们可以使用绑定来完成问题中要求的操作?
BenjaminGolder

是的,我发现的所有绑定都不完整,包括一些实际的优点,例如构造实体几何。而且,CGAL的高度模板化性质使其难以很好地包装。在我自己的项目(Demakein)中,我使用cffi模块和一些可怕的技巧,使用内联C ++代码段直接从python使用CGAL。
保罗·哈里森


6

我真的想要这个问题的一个好答案,而上面的那些让我不满意。但是,我只是遇到了pythonocc,看起来很不错,除了缺少好的文档,而且安装仍然有些麻烦(尚未pypi兼容)。最近一次更新是4天前(2011年6月19日)。它包装了具有大量几何和建模功能的OpenCascade。从pythonocc网站:

pythonOCC是用于Python编程语言的3D CAD / CAE / PLM开发框架。它提供的功能包括高级拓扑和几何运算,数据交换(STEP,IGES,STL导入/导出),2D和3D网格划分,刚体模拟,参数化建模。

[编辑:我现在下载了pythonocc并开始研究一些示例]

我相信它可以执行上述所有任务,但我发现使用起来并不直观。它几乎完全由SWIG包装器创建,因此,对命令进行自省变得很困难。


我认为这太多了。...我们应该开始一个吗?很快我的raytracer中将需要进行许多几何运算,因此可能需要为其创建单独的github。我已经有一些代码,我们不会从头开始,但是如果发现它不够好,它将很容易重新设计。
Stefano Borini

@Stefano Borini:当然!我会很乐意为您提供帮助,但是我离您的资格水平还差得远。
BenjaminGolder

同样,我对现有功能感到失望。对于简单的东西,我已经完成了自己的代码(例如,在Adolphus中),但是例如,今晚,我需要多面体-多面体相交,这离我理智的步骤仅一步之遥。无论如何,如果继续向前,请数我
。– ezod 2011年

这个项目诞生了吗?
Mermoz

1
@Mermoz是的,但是非常慢。Stefano已经开始使用该库,并且我一直在写自己的补充内容,但是我们还没有走太远。参见github.com/stefanoborini/python-geometrygithub.com/bengolder/python-geometry
BenjaminGolder

2

您可能对OpenOpt项目http://openopt.org中的Python模块SpaceFuncs感兴趣

SpaceFuncs是2D,3D,N维几何建模的工具,可以进行参数化计算,数值优化和几何方程组求解


2

Python Wild Magic是另一个SWIG包装的代码。但是,它是一个游戏库,但是您可以操纵SWIG库文件以从Python API中排除任何不需要的图形内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.