GeoSolver 是一个用于几何约束求解的 Python 包。
几何约束问题(GCP)是几何变量上/之间的一组几何约束。问题是找到几何变量的配置以满足所有约束。几何变量是位置、方向、形状、大小等未知的对象。GCP 中的变量可以是点、线、平面、球体、圆柱体和更复杂的形状。几何约束是诸如对象之间的距离(例如一对点之间或点与平面之间)、对象之间的角度(例如两个平面之间的角度)、曲线和曲面的相切、正交性和平行性等关系。。
几何约束问题存在于 CAD 应用、机器人、模拟和许多其他科学领域中。通用约束求解/满足方法通常不适用于几何约束问题,因此需要专门的几何约束求解(GCS)算法。
求解算法
GeoSolver Python 包提供了用于指定、分析和解决几何约束问题的类和函数。它可以用在需要解决几何约束问题的Python应用程序中。
特征:
-
3D 几何约束问题,包括:
-
点变量
-
两点距离约束
-
三点角度约束
-
-
其他几何变量(直线、平面、球体等)和约束的问题可以映射到点变量的这些基本约束
-
解决方案选择:
-
手性约束(时钟和旋手性约束)
-
基于原型(基于草图)的选择
-
-
找到一个通用解决方案,从中可以轻松导出不同参数值(例如距离和角度)的所有特定解决方案
-
增量算法,它可以有效地处理GCP的变化(即添加和删除约束和变量以及更改参数值)
-
可扩展的求解框架,允许新类型的几何变量和约束
GCS工作台
几何约束求解工作台提供了一个漂亮的 GUI,用于交互式编辑、分析和求解几何约束问题。它使用 GeoSolver 包进行分析和求解,使用 pyQt 和 pyOpenGL 进行交互式 3D 图形。
该工作台当前用于调试/测试 GeoSolver 包。它也可以用作教学工具,也许有一天可能会演变成一个完整的几何设计工具包。
特征:
-
轻松交互式编辑约束问题
-
问题和解决方案的 3D 视图
-
分解视图:显示问题如何分解为刚性簇树
关于 GeoSolver 中使用的几何约束求解算法的研究论文:Hilderick A. van der Meiden 和 Willem F. Bronsvoort,2009, 一种解决 3D 几何约束系统的非刚性簇重写方法,计算机辅助设计 42(1) ,第 36-49 页[doi:10.1016/j.cad.2009.03.003]
GCS 工作台在本文中介绍:Rogier de Regt、Hilderick A. van der Meiden 和 Willem F. Bronsvoort,2008,几何约束求解工作台,计算机辅助设计和应用,第 5 卷,第 1-4 期(CAD'08 会议论文集,2008 年 6 月 23-27 日,佛罗里达州奥兰多)[ doi: 10.3722/cadaps.2008.471-482]