任意数量控制点的B样条曲线
B-Spline for any number of control points
我目前正在使用数值弹簧物理学研究软体系统,我终于做到了。我的问题是,目前一切都是直线的。
我的目标是复制类似于游戏"地板是果冻"的东西,除了光滑的角落和变形之外,其他一切都能正常工作,而这些地方目前都是直的和有角度的。
我尝试过使用三次贝塞尔方程,但这意味着每3个节点我就有一条新曲线。贝塞尔样条曲线是否有一个方程,该方程包含n个控制点,这些控制点将与vec2的循环一起工作(因此节点[0]是第一个也是最后一个控制点)。
对不起,我没有任何代码可以显示,但我完全被难住了,谷歌搜索什么都没有。
只需谷歌"B样条曲线库"就能为您提供许多参考。话虽如此,B样条曲线并不是你唯一的选择。您也可以使用三次埃尔米特样条曲线(由一系列点和导数定义)(有关详细信息,请参阅链接)。
另一方面,您也可以在系统中继续使用直线,并创建一条插值直线顶点的曲线,仅用于显示目的。为了通过一系列数据点创建插值曲线,Catmull-Rom样条曲线是一个很好的选择,便于实现。这种方法可能比在系统中真正使用B样条曲线具有更好的性能。
我会使用B样条来解决这个问题,因为它们可以用最少的控制点来表示平滑曲线。此外,为给定的数据集寻找近似光滑表面是一个简单的线性代数问题。
我已经编写了一个简单的B样条C++库(也包括贝塞尔曲线),用于科学计算,如下所示:https://github.com/feevos/bsplines
它可以接受任意数量的控制点/倍数,并为您提供基础。然而,创建适合你的数据的B样条曲线是你必须做的事情
在GNU GSL(https://www.gnu.org/software/gsl/manual/html_node/Basis-Splines.html)。同样,在这里,您必须将给定基础的控制点实现为2/3D,并固定边界条件以适合您的数据。
有关开放/闭合曲线和B样条曲线的详细信息,请点击此处:https://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/index.html
- 使用 GSL 库制作样条曲线并使用它们进行集成
- 扩充矩阵的行缩减-三维样条曲线计算
- 向心Catmull-Rom样条曲线插值alpha参数
- C++ 来自 ALGLIB 的样条示例未在 MacOS 上编译
- 在QGraphicsView上实现交互式样条曲线的最佳方法是什么?
- C 特征:样条衍生物()给出奇怪的衍生物
- 薄板样条形状转换运行时错误 [使用代码 -1073741819 退出]
- 任意数量控制点的B样条曲线
- 特征样条插值 - 如何在任意点 x 处获取样条曲线 y 值
- 生成Catmull-Rom样条曲线并返回垃圾
- 在二维中计算具有3个给定点的精确样条曲线.C++
- 字体轮廓贝齐尔样条轮廓和直接写入
- C++ 中的插值样条曲线
- 对 3D 空间中的样条插值感到困惑
- b样条曲线
- 三次样条:开始/结束段插值
- 在c++程序中评估从max导出的3d样条曲线
- 结点(b样条)到底是什么
- 点数组的C++样条曲线插值
- 应该重新绘制B样条曲线,而不删除窗口的所有其余部分