首页 > 编程语言 >开源Python几何约束求解器GeoSolver

开源Python几何约束求解器GeoSolver

时间:2024-04-18 17:47:14浏览次数:30  
标签:变量 求解 Python 约束 开源 GeoSolver 几何

GeoSolver 是一个用于几何约束求解的 Python 包。

几何约束问题(GCP)是几何变量上/之间的一组几何约束。问题是找到几何变量的配置以满足所有约束。几何变量是位置、方向、形状、大小等未知的对象。GCP 中的变量可以是点、线、平面、球体、圆柱体和更复杂的形状。几何约束是诸如对象之间的距离(例如一对点之间或点与平面之间)、对象之间的角度(例如两个平面之间的角度)、曲线和曲面的相切、正交性和平行性等关系。。

几何约束问题存在于 CAD 应用、机器人、模拟和许多其他科学领域中。通用约束求解/满足方法通常不适用于几何约束问题,因此需要专门的几何约束求解(GCS)算法。

求解算法

GeoSolver Python 包提供了用于指定、分析和解决几何约束问题的类和函数。它可以用在需要解决几何约束问题的Python应用程序中。

特征:

  • 3D 几何约束问题,包括:
  1. 点变量
  2. 两点距离约束
  3. 三点角度约束
  • 其他几何变量(直线、平面、球体等)和约束的问题可以映射到点变量的这些基本约束

  • 解决方案选择:

  1. 手性约束(时钟和旋手性约束)
  2. 基于原型(基于草图)的选择
  • 找到一个通用解决方案,从中可以轻松导出不同参数值(例如距离和角度)的所有特定解决方案
  • 增量算法,它可以有效地处理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]

标签:变量,求解,Python,约束,开源,GeoSolver,几何
From: https://www.cnblogs.com/caxkernel/p/18144079

相关文章

  • Effective Python:第7条 尽量用enumerate取代range
    Python有个内置的函数,叫作enumerate。enumerate能够把任何一种迭代器(iterator)封装成惰性生成器(lazygenerator)。这样的话,每次循环的时候,它只需要从iterator里面获取下一个值就行了,同时还会给出本轮循环的序号,即生成器每次产生的一对输出值。下面通过内置的next函数手动推进enumera......
  • 推荐一个计算Grad-CAM的Python库
    前言类激活图CAM(classactivationmapping)用于可视化深度学习模型的感兴趣区域,增加了神经网络的可解释性。现在常用Grad-CAM可视化,Grad-CAM基于梯度计算激活图,对比传统的CAM更加灵活,且不需要修改模型结构。虽然计算grad-cam并不复杂,但是本着能导包就导包的原则,想着去用现成的......
  • Effective Python:第6条 把数据结构直接拆分到多个变量里,不要专门通过下标访问
    使用拆分(unpacking),就可以把元组里面的元素分别赋给多个变量。优点:1,通过unpacking来赋值要比通过下标去访问元组内的元素更清晰,而且这种写法所需的代码量通常比较少。2,便于原地交换两个变量;tb=[1,2]tb[0],tb[1]=tb[1],tb[0]print(tb)3,for循环或者类似的结构(例如推......
  • python包:matplotlib
    1):matplotlib是一个python2D绘图库,利用它可以画出许多高质量的图像。只需几行代码即可生成直方图,条形图,饼图,散点图等。Matplotlib是整个包,pyplot是Matplotlib中的一个模块,并且pylab是一个安装在一起的模块。 https://matplotlib.org/2:使用https://zhuanlan.zhihu.com/p......
  • python --多个叠加装饰器
    defdeco1(func1):defwrapper1(*args,**kwargs):print("运行deco1_wrapper1")res1=func1(*args,**kwargs)returnres1returnwrapper1defdeco2(func2):defwrapper2(*args,**kwargs):print("运行deco2_wra......
  • blender python api 使用脚本修改动画关键帧的属性值
    1.代码1-将动画关键帧中的所有Y轴都设置为1.0,代码:importbpy#设置重置到的Y坐标值reset_to=1.0#遍历所有当前选中的对象forobjectinbpy.context.selected_objects:#如果对象没有动画,我们也应该重置其Y坐标object.location.y=reset_to#检......
  • 对大量ip:port进行批量telnet检测的python脚本
    对大量ip:port进行批量telnet检测的python脚本telnet_test.py#导入socket模块,用于网络通信importsocket#定义一个函数,用于测试Telnet连接是否成功deftest_telnet(ip,port):try:#尝试创建到指定IP和端口的连接socket.create_connection((ip,po......
  • python学习第一天
    学习一门技术,我们都要知道三个问题。为什么要学习?优点缺点是?怎么入门?python有很强的,就业性,学习完全是为了未来ai趋势做迎合,同样也是基于爱好站在了人工智能和大数据的风口上,站在风口上,猪都能飞起来。优点:简单上手,功能强大,库多缺点:速度慢,代码不能加密2、python的第一个......
  • 基于python的文件seek和tell实例解析
    一概念AF.seek(偏移量,whence=相对位置)偏移量大于0的数代表向文件末尾方向移动的字节数小于0的数代表向文件头方向中移动的字节数相对位置0代表从文件头开始偏移1代表从文件当前读写位置开始偏移2代表从文件尾开始偏移Btell函数能够返回指针......
  • 开源在线表单工具 HeyForm 使用教程
    HeyForm是一个非常出色的开源在线表单工具,可以通过直观的拖拽式编辑器,快速构建出美观实用的表单。HeyForm的功能非常丰富:支持丰富的输入类型,从基础的文本、数字到高级的图片选择、日期选择、文件上传等,一应俱全。通过条件逻辑和URL重定向实现动态、可适应的表单。提供了......