这个仓库包含了Splipy包。Splipy是一个纯python库,用于创建、评估和操作b样条和NURBS几何图形。它支持任意维度的n变量样条,但重点是曲线、曲面和体积的使用。该库主要为分析使用而设计,因此允许对许多传统CAD工具无法实现的方面进行细粒度控制。
安装方式:
pip install splipy -i https://mirrors.aliyun.com/pypi/simple/
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文件的库。该工具包还包括几个示例程序的源代码。
进行B样条计算的简单算法库,支持VC++ 6.0。
SISL是一个全面的NURBS库,用于建模和曲线和曲面的问题。它是用C语言实现的。这个软件是由SINTEF数字数学与控制论学系的几何组编写。
gsl(GNU Scientific Library)是专门为应用数学和科学技术领域的数值计算提供支持的软件库。gsl使用C语言编写,同时也为其他语言做了相应的封装。gsl在GNU通用公共许可下是免费的。该函数库提供了广泛的数学算法的实现函数,包括随机数生成器,特殊函数和最小二乘拟合等等。目前该函数库提供有超过1000个函数,这些函数包含的范围有:复数计算、多项式求根、特殊函数、向量和矩阵运算、排列、组合、排序、线性代数、特征值和特征向量、快速傅里叶变换(FFT)、数值积分、随机数生成、随机数分布、统计、蒙特卡洛积分、模拟退火、常微分方程组、插值、数值微分、方程求根、最小二乘拟合、小波变换等。它内置有对样条插件算法的支持。
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。它是一个平台独立的库,没有依赖关系。
维也纳工业大学Thomas Mörwald版权所有© 2015。“License.txt”文件中有可用的License。
依赖关系:
要求:
生成/拟合指定的NURBS曲线包。
该方法是一种基于ROS包的NURBS方法,用于自主移动机器人导航中的路径平滑,以避免全局规划者生成的路径中出现大量急转弯。NURBS(非均匀有理b样条)曲线由控制点、结向量和权向量组成,是一种能保证曲线曲率连续性并具有高度自由度的参数曲线。
主要特点包括:
实现了生成直线、贝塞尔曲线、b样条曲线和NURBS曲线。
实现了全局插值方法(参考文献)拟合离散路径点。
实现了运动规划使用的有用函数,如计算NURBS曲线导数、曲率、曲线长度等。
实现了有限拟合功能,使移动机器人在导航时不需要原地旋转。
软件包正在开发中,一些未来的工作列出如下:
插入节点函数
碰撞检测
实时控制点重新定位(路径修改)
扩展到3D NURBS曲线。
样条曲线曲面的计算,需要复杂数学知识的理解。以上函数库提供了一部分Bezier曲线功能的封装,可以参考。