三次B样条曲线按参数 u 拆分为两条曲线的方法:
设原三次B样条曲线的控制点为:
P_0, P_1, P_2, ..., P_n
节点向量为:
U = { u_0, u_1, u_2, ..., u_m },其中 m = n + 4
给定参数 u,且 u ∈ [u_i, u_(i+1)),目标是将曲线在 u 处拆分为两条新的三次B样条曲线。
步骤1:确定节点插入位置
找到整数 i,使得:
u_i ≤ u < u_(i+1)
步骤2:单次节点插入公式
插入节点 u,生成新控制点序列 {Q_j},规则如下:
对于 j = 0 到 i−3:
Q_j = P_j
对于 j = i+1 到 n:
Q_j = P_(j−1)
对于 j = i−2, i−1, i(受影响区域):
计算混合系数:
α_j = (u − u_j) / (u_(j+3) − u_j)
新控制点为:
Q_j = (1 − α_j) × P_(j−1) + α_j × P_j
步骤3:重复插入节点 u 三次
由于是三次曲线(k = 3),需将 u 插入 3 次,每次更新控制点和节点向量。
- 每次插入后,控制点数增加1,节点向量增加一个 u
- 三次插入后,控制点数变为 n + 4
- 节点向量中 u 的重数达到 4(即 u 出现4次),此时曲线在 u 处达到 C⁰ 连续,可进行分割
步骤4:提取两条子曲线
设三次插入后,控制点序列为:
Q_0, Q_1, Q_2, ..., Q_(n+3)
设分割点对应的控制点为 Q_m(通常 m = i,具体取决于节点向量结构)
第一条曲线(对应参数区间 [u_0, u])
- 控制点:
Q_0, Q_1, ..., Q_m - 节点向量:
从新节点向量中提取所有 ≤ u 的节点,并在末尾补足 u,使其重数为4
例如:{ ..., u, u, u, u }
第二条曲线(对应参数区间 [u, u_m])
- 控制点:
Q_m, Q_(m+1), ..., Q_(n+3) - 节点向量:
从新节点向量中提取所有 ≥ u 的节点,并在开头补足 u,使其重数为4
例如:{ u, u, u, u, ... }
通过以上步骤,即可将一条B样条曲线通过插入重复节点的方式,拆分成了两条B样条曲线。