python中的好几何体库?

python中的好几何体库?,python,geometry,Python,Geometry,我正在寻找一个好的、开发良好的python几何操作和评估库,如: 评估二维和三维中两条线之间的交点(如果存在) 计算平面和直线之间的交点,或两个平面之间的交点 计算直线和点之间的最小距离 求通过点的平面的法线 旋转、平移、镜像一组点 求由四个点定义的二面角 我有一本所有这些操作的概要书,我可以实现它,但不幸的是我没有时间,所以我会喜欢一个这样做的图书馆。大多数操作对于游戏目的都很有用,因此我确信这些功能中的一些可以在游戏库中找到,但我不希望包含我不需要的功能(如图形) 有什么建议吗?谢谢你,

我正在寻找一个好的、开发良好的python几何操作和评估库,如:

  • 评估二维和三维中两条线之间的交点(如果存在)
  • 计算平面和直线之间的交点,或两个平面之间的交点
  • 计算直线和点之间的最小距离
  • 求通过点的平面的法线
  • 旋转、平移、镜像一组点
  • 求由四个点定义的二面角
我有一本所有这些操作的概要书,我可以实现它,但不幸的是我没有时间,所以我会喜欢一个这样做的图书馆。大多数操作对于游戏目的都很有用,因此我确信这些功能中的一些可以在游戏库中找到,但我不希望包含我不需要的功能(如图形)


有什么建议吗?谢谢你,这是一个很好的python包装器,可以用来包装流行的库。

也许可以看看。

也有。

有类,点线平面移动约300行,只使用numpy;看看。

我发现这是一个非常简单的通用欧几里德数学软件包。虽然库中可能没有您提到的问题,但它的基础设施足够好,可以让您自己轻松地编写这些问题。

我真的很想对这个问题有一个好的答案,上面的问题让我很不满意。然而,我只是遇到了看起来很棒的,除了缺少好的文档和在安装上仍然有一些问题(还不兼容pypi)。上次更新是在4天前(2011年6月19日)。它包含大量的几何图形和建模功能。从Pythonoc网站:

pythonOCC是Python编程语言的三维CAD/CAE/PLM开发框架。它提供高级拓扑和几何操作、数据交换(STEP、IGES、STL导入/导出)、二维和三维网格划分、刚体仿真、参数化建模等功能

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


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

您可能对OpenOpt项目中的Python模块SpaceFuncs感兴趣



SpaceFuncs是用于二维、三维和N维几何建模的工具,具有参数化计算、数值优化和几何方程求解系统的可能性

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

似乎非常关注GIS数据处理,而不是纯粹的“数学几何”(可以说),它当然是为GIS社区使用而创建的,然而,它故意忽略地理投影,这使得它可以作为通用的欧几里德几何库使用。我在一个刚刚起步的电脑游戏项目中大量使用了它,效果很好。它对3D几何体的描述:“在构造实例时可以使用第三个z坐标值,但对几何分析没有影响。所有操作都在x-y平面上执行。”我花了大约半个小时的编码才找到上面的评论。真的很激动。为什么当这个问题特别要求3D时只投了一张反对票?它并不能真正满足我的要求,但它确实是一个很酷的项目,所以我接受你的回答,认为这是一个有趣的建议,也是为了未来(因为SymPy有一个几何模块,还有大量的开发人员)2d只是很遗憾。不是真正的构造性几何引擎。Symphy的几何模块也可能非常非常慢。因为它是为做符号数学而设计的,所以它更喜欢使用精确表达式而不是近似的浮点值。考虑到几何计算中通常涉及的平方根数量,您可以想象这些表达式是如何变得非常大和非常慢的。更新到现在还包含3D库感谢您的回答。我现在正在试SymPy。第一个实验似乎执行起来相当慢——即使是对于一个简单的2D对象。知道它是否适合实时处理几何图形吗?谢谢。上一个版本是2009年,它们似乎不完整。有人能说他们最近使用过它们,并且他们可以使用绑定来完成问题中提出的事情吗?是的,我发现的所有绑定都是不完整的,包括一些真正的好东西,比如构造性立体几何。此外,CGAL的高度模板化特性使得它很难很好地包装。在我自己的项目中,我使用CFFI模块和一些可怕的黑客从Python直接使用CGAL,使用内联C++代码片段。我们应该开始吗?我将很快在我的光线跟踪器中需要许多几何体操作,为它创建一个单独的github可能是有意义的。我已经有了一些代码,我们不是从零开始的,但是如果我们发现它不够好,那么重新设计就很容易了。@Stefano Borini:当然!我很乐意尽我所能提供帮助,但我的资历远没有达到你的水平。我同样对现有的条件感到失望。对于简单的东西,我已经完成了我自己的代码(例如,在),但今晚,例如,我需要多面体-多面体交集,它只是太多的步骤,我必须理智。无论如何,如果这件事继续下去,把我也算进去。这个项目诞生了吗?@Mermoz是的,但速度很慢。斯蒂法诺已经开始了图书馆的建设,我也一直在写我自己的补充,但我们还没有走得很远。看,如果你对2D没问题,那么你可以去看看。