• 几何运算库-bessel-贝塞尔曲线-Splipy-openNURBS-libnurbs-SISL-tinynurbs-样条拟合


    1.Splipy-纯python库

    这个仓库包含了Splipy包。Splipy是一个纯python库,用于创建、评估和操作b样条和NURBS几何图形。它支持任意维度的n变量样条,但重点是曲线、曲面和体积的使用。该库主要为分析使用而设计,因此允许对许多传统CAD工具无法实现的方面进行细粒度控制。
    安装方式:

    pip install splipy -i https://mirrors.aliyun.com/pypi/simple/

    2.openNURBS-精确传输格式解析工具

    openNURBS计划为CAD、CAM、CAE和计算机图形软件开发人员提供了在应用程序之间精确传输3d几何图形的工具。openNURBS工具包包含c++源代码,用于读写openNURBS 3D模型文件(.3dm)。超过400个软件开发团队和应用程序,包括Rhinoceros®,使用openNURBS (.3dm)文件格式交换3D模型。openNURBS Toolkit读写所有Rhino 3DM文件。此外,openNURBS工具包还提供NURBS评估工具和基本几何和3D视图操作工具。与其他开放开发计划、联盟或财团不同:鼓励商业用途。工具、支持和会员资格都是免费的。没有任何限制。版权和copyleft限制都不适用。不需要成员贡献努力或技术,尽管这是被鼓励的。openNURBS工具包是为c++和.net程序员设计的。该工具包包含完整的源代码,用于创建读写3DM文件的库。该工具包还包括几个示例程序的源代码。

    3.libnurbs-样条算法封装

    进行B样条计算的简单算法库,支持VC++ 6.0。

    4.SISL-全面的NURBS库

    SISL是一个全面的NURBS库,用于建模和曲线和曲面的问题。它是用C语言实现的。这个软件是由SINTEF数字数学与控制论学系的几何组编写。

    5.gsl-数值计算库

    gsl(GNU Scientific Library)是专门为应用数学和科学技术领域的数值计算提供支持的软件库。gsl使用C语言编写,同时也为其他语言做了相应的封装。gsl在GNU通用公共许可下是免费的。该函数库提供了广泛的数学算法的实现函数,包括随机数生成器,特殊函数和最小二乘拟合等等。目前该函数库提供有超过1000个函数,这些函数包含的范围有:复数计算、多项式求根、特殊函数、向量和矩阵运算、排列、组合、排序、线性代数、特征值和特征向量、快速傅里叶变换(FFT)、数值积分、随机数生成、随机数分布、统计、蒙特卡洛积分、模拟退火、常微分方程组、插值、数值微分、方程求根、最小二乘拟合、小波变换等。它内置有对样条插件算法的支持。

    6.tinynurbs-轻量级的样条库

    his是一个轻量级的c++ 14标头库,用于非均匀有理b样条曲线和曲面。该API使用简单,代码可读性强,而且效率高。
    一些主要的特点包括:支持任意顺序的非有理和有理曲线和曲面,求任意阶的点和导数,节点插入,分裂不影响原有形状,该轻量级库正在开发中。
    它依赖glm库。OpenGL Mathematics (GLM)是一个基于OpenGL Shading Language (GLSL)规范的图形软件标头c++数学库。GLM提供的类和函数的设计和实现采用了与GLSL相同的命名约定和功能,因此任何了解GLSL的人都可以在c++中使用GLM。这个项目并不局限于GLSL特性。基于GLSL扩展约定的扩展系统提供了扩展功能:矩阵转换、四元数、数据打包、随机数、噪声等……这个库可以与OpenGL完美地工作,但它也确保了与其他第三方库和SDK的互操作性。它是软件渲染(光线跟踪/栅格化)、图像处理、物理模拟和任何需要简单方便的数学库的开发上下文的良好候选。GLM是用c++ 98编写的,但在编译器支持的情况下可以利用c++ 11。它是一个平台独立的库,没有依赖关系。

    7.OpenNurbsFit-样条拟合库

    维也纳工业大学Thomas Mörwald版权所有© 2015。“License.txt”文件中有可用的License。

    依赖关系:
    要求:

    • openNURBS SDK 5.0: Rhinoceros 3D openNURBS Initiative(包含)
      特征3.2.0:线性代数模板库(libeigen3-dev)
    • SuiteSparse (libsuitesparse-dev)
      可选:
      OpenMP:开放多处理库(www.openmp.com)
      TomGine 4.1:可视化和渲染引擎(包含)

    8.agv path smoothing-样条拟合库

    生成/拟合指定的NURBS曲线包。

    该方法是一种基于ROS包的NURBS方法,用于自主移动机器人导航中的路径平滑,以避免全局规划者生成的路径中出现大量急转弯。NURBS(非均匀有理b样条)曲线由控制点、结向量和权向量组成,是一种能保证曲线曲率连续性并具有高度自由度的参数曲线。

    主要特点包括:
    实现了生成直线、贝塞尔曲线、b样条曲线和NURBS曲线。
    实现了全局插值方法(参考文献)拟合离散路径点。
    实现了运动规划使用的有用函数,如计算NURBS曲线导数、曲率、曲线长度等。
    实现了有限拟合功能,使移动机器人在导航时不需要原地旋转。

    软件包正在开发中,一些未来的工作列出如下:
    插入节点函数
    碰撞检测
    实时控制点重新定位(路径修改)
    扩展到3D NURBS曲线。

    9.总结

    样条曲线曲面的计算,需要复杂数学知识的理解。以上函数库提供了一部分Bezier曲线功能的封装,可以参考。

  • 相关阅读:
    使用AutoFS服务完成自动挂载
    Vue3表单页面利用keep-alive缓存数据的一种思路
    K近邻算法
    【Java面试八股文宝典之基础篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day10
    php单独使用laravel数据库
    Postman知识汇总
    SAP-MM/QM 移动原因维护
    SQL使用
    邮件出现延时的本质究竟是什么......
    零代码编程:用ChatGPT批量采集bookroo网页上的英文书目列表
  • 原文地址:https://blog.csdn.net/m0_67316550/article/details/128048378