【发布时间】:2019-10-25 16:32:20
【问题描述】:
问题描述
我正在尝试理解和实施曲线全局近似,如下所示:
https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/INT-APP/CURVE-APP-global.html
要实现该算法,必须计算基函数系数,如下所述:
https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/B-spline/bspline-curve-coef.html
我无法理解一些细节。
如果输入参数 是节点向量 的元素之一,则不需要间隔。所以我假设 实际上是前面定义的这些元素之一(?):
这个假设正确吗?
- 最重要的问题。我试图让我的 N 使用两个链接中的第一个,即全局曲线近似的实现。当我查看矩阵维度(其中提到了 P、Q、N 维度)时,似乎 N 应该有 n 行和 h-1 列。这意味着,N 的行数等于数据点的数量,列数等于曲线度数减一。但是,当我在第二个链接中查看 N 的实现细节时,会使用 n 元素初始化 N 行。我指的是:
将N[0..n]初始化为0; // 初始化
但我还需要为所有参数 计算 N,这些参数对应于我的参数 ,而这些参数又对应于数据点。所以得到的矩阵的维数是( n x n )。这与前面提到的( n x ( h - 1 ) )不对应。
更进一步,在描述近似算法的链接中,N 用于计算 Q。但是紧接着我被要求计算我应该已经拥有的 N,否则我将如何计算 Q?这甚至是同一个N吗?我是否必须为所需数量的控制点计算新的 N?
结论
如果有人对此有任何有用的见解 - 请分享。我的目标是使用带有 Eigen 的 C++ 来实现这一点,因为它 w.r.t. 在解决 M * P = Q 和矩阵计算方面很有用。目前我很茫然。一切似乎或多或少都清楚,除了 N,尤其是它的维度以及是否需要多次计算。
其他媒体
在最后一张图片中应该说,"[...] used before the calculation of Q"
【问题讨论】:
-
mathoverflow.net 或 math.stackexchange.com 可能更适合这个问题。据我所知,它没有任何 C++(标签除外)。
-
诚然,我不确定哪个 SE 最适合这个。我之所以选择 SO,是因为这些问题专门针对这两种算法实现,而且我想使用 Eigen 来实现它。
-
那么我认为您需要开始实施它并就出现的问题提出具体问题。事实上,我认为它会被关闭。您的问题看起来与数学相关,而不是与实现相关 - 但我不太了解数学,所以我可能是错的。
-
如果我不清楚示例算法的关键问题w.r.t.,我不明白我应该如何开始实施。
-
这就是为什么我建议你从数学论坛开始。在那里获得帮助并返回这里解决实施问题。我敢肯定
eigen对他们来说并不陌生。
标签: c++ algorithm eigen spline bspline