Main Content

spcrv

通过均匀细分生成样条曲线

语法

spcrv(c,k)
spcrv(c)
spcrv(c,k,maxpnt)

说明

spcrv(c,k) 提供具有 B 样条系数 ck 阶均匀 B 样条曲线 f 上各点的稠密序列 f(tt)。这是曲线

f:t|j=1nB(tk/2|j,...,j+k) c(j), k2tn+k2

其中 B(·|a,...,z) 表示具有节点 a,...,z 的 B 样条,nc 中系数的数目,即 [d,n] 等于 size(c)

spcrv(c) 选择阶 k 为 4。

spcrv(c,k,maxpnt) 确保至少生成 maxpnt 个点。要生成的位点 tt 的最大数量的默认值为 100

位点序列 tt 均匀填充的参数区间为区间 [k/2 .. (n-k/2)]。

输出由数组 f(tt) 组成。

示例

下面将显示一条不确定的虚线及其平滑版本:

points = [0 0 1 1 0 -1 -1 0 0 ;
        0 0 0 1 2 1 0 -1 -2]; 
plot(points(1,:),points(2,:),':') 
values = spcrv(points,3); 
hold on, plot(values(1,:),values(2,:)), hold off

算法

重复进行中间节点插入,直到至少有 maxpnt 个位点。有些情况下,使用 fnplt 会更高效。

另请参阅