📘 B-Spline 核心理解:滑动窗口与有效区间 #
1. B-spline 基本定义 #
B-spline 曲线定义为:
C(u)=i=0∑nNi,p(u),Pi其中:
- Pi:控制点
- Ni,p(u):p 次 B-spline 基函数
- u:参数
2. 核心结构:滑动窗口(Order) #
2.1 Order 定义 #
order=p+1
2.2 本质含义 #
在任意参数 u 处:
只有 p+1 个控制点同时参与计算
即:
C(u) 由 p+1 个 Pi 加权得到
2.3 滑动窗口形式 #
例如 p=3:
order=4控制点参与形式:
[Pi,Pi+1,Pi+2,Pi+3]窗口随 u 移动:
[P0P1P2P3]→[P1P2P3P4]→[P2P3P4P5]
3. 为什么是 p+1 个控制点? #
关键来自 Cox–de Boor 支撑性质:
Ni,p(u)=0⇒u∈[ui,;ui+p+1)
因此:
- 每个基函数覆盖 p+1 个 knot interval
- 多个基函数重叠形成窗口
结果:
同时非零的 basis 数量=p+1
4. knot vector 示例 #
设:
U=0,0,0,0,;0.3,;0.6,;1,1,1,1
5. 每个控制点的支撑区间 #
根据:
supp(Ni,p)=[ui,;ui+p+1)
p = 3 时: #
P0: #
[u0,;u4]=[0,0.3]P1: #
[u1,;u5]=[0,0.6]P2: #
[u2,;u6]=[0,1]P3: #
[u3,;u7]=[0,1]P4: #
[u4,;u8]=[0.3,1]
6. 为什么会形成“滑动窗口” #
因为:
- 每个 Ni,p(u) 只在局部区间非零
- 不同 basis 区间重叠
因此在每个 u:
∃;p+1 个 basis 同时非零
7. 有效区间的来源 #
7.1 左端分析 #
在 u<up 时:
例如 u=0:
- basis 未形成完整 overlap
- 非零 basis 数量 < p+1
7.2 右端分析 #
在 u>um−p 时:
- sliding window 滑出 knot 范围
- overlap 结构消失
8. 有效区间定义 #
因此稳定结构区间为:
u∈[up,;um−p]
9. 为什么这个区间重要? #
在该区间内满足:
9.1 完整 overlap: #
i∑1[Ni,p(u)=0]=p+1
9.2 partition of unity: #
i∑Ni,p(u)=1
9.3 convex combination: #
C(u)=i∑Ni,p(u)Pi
10. 两端 vs 中间 #
10.1 中间区间 #
u∈[up,;um−p]特点:
- p+1 个 basis overlap
- 凸组合成立
- 曲线稳定
10.2 两端区间 #
例如 u=0:
C(0)=P0特点:
- overlap 退化
- basis collapse
- 不形成完整窗口结构
11. 最终统一解释 #
B-spline 本质结构: #
① knot 决定时间轴 #
② basis 决定局部支撑 #
③ order 决定窗口大小 #
合起来: #
B-spline=滑动窗口上的局部加权平均系统
12. 核心结论 #
[up,;um−p] 是滑动窗口结构完整成立的稳定区间
13. 一句话总结 #
B-spline 的有效区间不是“函数定义区间”,而是“p+1 个 basis function 能够完整重叠并形成 convex combination 的区域”。