1) 我有一堆从 P0 到 PN 的样条控制点。
2) 我有一个样条基矩阵。
给定 2 个控制点索引和一个 t 值,我如何应用基础矩阵来获得插值位置?
现在我不断看到以下表格:
[b00, b01, b02, b03] [p0]
[b04, b05, b06, b07] [p1]
[t^3, t^2, t, 1][b08, b09, b10, b11].[p2]
[b12, b13, b14, b15] [p3]
所以我假设 p0 等是我的控制点。我还假设这是每个组件(即 x、y、z)。但是我完全不确定我到底在用 t 值做什么。
谁能帮我解释一下?我很可能只是个白痴 :)
我正在使用 C++,并且有很多数学课,所以我不想扩展数学。只了解正在发生的事情会更有用。
最佳答案
是的,它是针对每个组件的,因此每个 p 都是一个数字。它们是四个连续控制点的 x 坐标(比方说)。
您的矩阵只是三个矩阵的乘积:普通矩阵乘法。所以这是一个总和:t^3.(b00.p0+b01.p1+...) + t^2.(b04.p0+b05.p1+...) + 等。这就是给定值的坐标值吨。 (当然,t^3 表示 t*t*t 而不是像 C 中那样的 t XOR 3。)
在样条曲线的每段上,t 的取值范围通常为 0 到 1。然后 b 值将使得一个段在 t=1 时的值等于下一段在 t=0 时的值(因此不依赖于第一段的第一个控制点或最后一个控制点下一个)。
关于c++ - 如何应用样条基矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5128041/