为更好地发挥 NURBS 曲线在表达原始数据曲线形状特征方面的优势,非均匀 B 样条插值仍需对原始密集刀位数据点合理地选取特征点。
由于数据点的曲率信息能够很好地反映原始数据曲线的形状特征,把数据点与曲率关联起来进行形状特征点的选取,可以更好地表达原始数据曲线的形状特征。
一条
ρ
\rho
ρ 次 NURBS 曲线定义为

采用相邻 3 个数据点形成近似圆弧的方法进行各原始数据点曲率的求解。 如图 1 所示,设原始数据点的个数为
t
+
1
t +1
t+1, 其中
i
i
i 个数据点
Q
i
Q_i
Qi 对应的曲率半径为
p
i
(
i
=
0
,
1
,
…
,
t
)
p_i (i=0,1,…,t)
pi(i=0,1,…,t),其近似求解公式为

则第
i
i
i 个数据点
Q
i
Q_i
Qi 处对应的曲率为
k
i
=
1
ρ
i
(
4
)
k_i=\frac{1}{\rho_i} \qquad\qquad(4)
ki=ρi1(4)

原始数据曲线按照曲率大小可划分为若干大曲率段和若干小曲率段。大曲率段曲线的弯曲程度较大,应选取较多的特征点才能更好地表达曲线的弯曲特征。小曲率段曲线相对而言则比较平直,选取较少的特征点便可较好地表达曲线的特征。 可见,不同大小曲率段选取的特征点数也会有所差别,有必要研究曲线按曲率进行分段的方法,准确确定出各曲率段间临界分段点的位置。
当第
i
i
i 个数据点
Q
i
Q_i
Qi 对应的曲率
k
i
k_i
ki 与邻近的数据点曲率之间满足如下初确定条件之一时,
(
1
)
k
i
−
j
>
k
i
,
j
=
1
,
2
,
3
;
\ \ \ (1)\ \ \ k_{i-j}>k_i,\ \ j=1,2,3;
(1) ki−j>ki, j=1,2,3;
(
2
)
k
i
+
j
>
k
i
,
j
=
1
,
2
,
3.
\ \ \ (2)\ \ \ k_{i+j}>k_i, \ \ j=1,2,3.
(2) ki+j>ki, j=1,2,3.
则可以将 Q i Q_i Qi 作为曲线按曲率分段的初确定分段点。
但是考虑原始数据曲线存在曲率跳跃的情况,仅满足上述一个条件尚不足以保证 Q i Q_i Qi 两侧邻近数据点中的一侧数据点曲率远大于另一侧数据点的曲率。因此,还需针对不同情况辅以其他约束条件,以保证分段点的准确性。
当第
i
i
i 个数据点
Q
i
Q_i
Qi 对应的曲率
k
i
k_i
ki 满足条件 (1) 时,记,

其中,
Δ
k
i
+
‾
\Delta{\overline{k_i^+}}
Δki+表示向前曲率差分之和;
Δ
k
i
\Delta{k_i}
Δki 表示曲率差分极值;符号“+”与“-”分别表示向前与向后差分运算。
如果满足 Δ k i − > Δ k i + ‾ \Delta{k_i^-}>\Delta{\overline{k_i^+}} Δki−>Δki+,且满足 H Δ k i + < k ‾ H\Delta{k_i^+}< \overline{k} HΔki+<k,则可以将曲率值 k i k_i ki 对应的数据点 Q i Q_i Qi 作为终确定的分段点,其中, H H H 为常数, H H H 通常取值为 2 2 2~ 3 3 3; k ‾ \overline k k 为所有数据点曲率的平均值。
同样, 当第
i
i
i 个数据点
Q
i
Q_i
Qi 对应的曲率
k
i
k_i
ki 满足条件(2)时, 记

[1] 曲率自适应条件下特征点选取的非均匀 B 样条曲线插值方法
[2] Nurbs曲线详解 2018.9