曲率计算公式
设参数曲线C(u):
C
(
u
)
=
(
x
(
u
)
,
y
(
y
)
,
z
(
u
)
)
C(u) = (x(u),y(y),z(u))
C(u)=(x(u),y(y),z(u))
曲线曲率表达为:
k
(
u
)
=
∣
C
′
(
u
)
×
C
′
′
(
u
)
∣
∣
C
′
(
u
)
∣
3
(
1
)
k(u)=\frac{|C^{'}(u)\times C^{''}(u)|}{|C^{'}(u)|^3}\quad (1)
k(u)=∣C′(u)∣3∣C′(u)×C′′(u)∣(1)
其中:
C
′
(
u
)
为
一
阶
导
数
C
′
′
(
u
)
为
二
阶
导
数
C
′
(
u
)
×
C
′
′
(
u
)
为
一
阶
导
数
和
二
阶
导
数
的
叉
乘
\begin{aligned} &C^{'}(u) 为一阶导数 \\ &C^{''}(u) 为二阶导数 \\ &C^{'}(u)\times C^{''}(u) 为一阶导数和二阶导数的叉乘 \\ \end{aligned}
C′(u)为一阶导数C′′(u)为二阶导数C′(u)×C′′(u)为一阶导数和二阶导数的叉乘
叉乘公式
设置两个向量:
一
阶
导
数
:
a
=
(
x
1
,
y
1
,
z
1
)
二
阶
导
数
:
b
=
(
x
2
,
y
2
,
z
2
)
a
×
b
=
∣
i
j
k
x
1
y
1
z
1
x
2
y
2
z
2
∣
=
(
x
3
,
y
3
,
z
3
)
=
(
2
)
=
(
y
1
z
2
−
y
2
z
1
)
i
−
(
x
1
z
2
−
x
2
z
1
)
j
+
(
x
1
y
2
−
x
2
y
1
)
k
!
[
\begin{aligned} 一阶导数:&\mathbf{a}=(x_1,y_1,z_1)\\ 二阶导数:&\mathbf{b}=(x_2,y_2,z_2)\\ &\mathbf{a}\times \mathbf{b}=\left| \begin{matrix} i & j & k\\ x_1 & y_1 & z_1\\ x_2 & y_2 & z_2\\ \end{matrix} \right|=(x_3,y_3,z_3)=\quad \quad \quad (2)\\ &\quad \quad \quad= (y_1z_2-y_2z_1)i-(x_1z_2-x_2z_1)j+(x_1y_2-x_2y_1)k![ \end{aligned}
一阶导数:二阶导数:a=(x1,y1,z1)b=(x2,y2,z2)a×b=∣∣∣∣∣∣ix1x2jy1y2kz1z2∣∣∣∣∣∣=(x3,y3,z3)=(2)=(y1z2−y2z1)i−(x1z2−x2z1)j+(x1y2−x2y1)k![
3-D曲线曲率计算
计算三次样条曲线曲率:
C
′
(
u
)
=
(
x
1
,
y
1
,
z
1
)
C
′
′
(
u
)
=
(
x
2
,
y
2
,
z
2
)
∣
C
′
(
u
)
∣
=
x
1
2
+
y
1
2
+
z
1
2
由
公
式
(
2
)
得
:
∣
C
′
(
u
)
×
C
′
′
(
u
)
∣
=
x
3
2
+
y
3
2
+
z
3
2
\begin{aligned} &C^{'}(u)=(x_1,y_1,z_1)\\ &C^{''}(u)=(x_2,y_2,z_2)\\ &|C^{'}(u)|=\sqrt{x^2_1+y^2_1+z^2_1}\\ \\ &由公式(2)得:\\ &|C^{'}(u)\times C^{''}(u)|=\sqrt{x^2_3+y^2_3+z^2_3}\\ \end{aligned}
C′(u)=(x1,y1,z1)C′′(u)=(x2,y2,z2)∣C′(u)∣=x12+y12+z12由公式(2)得:∣C′(u)×C′′(u)∣=x32+y32+z32
2-D曲线曲率计算
2-D曲线的曲率计算时,依然可以使用前文使用的公式,此时,设置z坐标值为0即可:
a
=
(
x
1
,
y
1
,
0
)
b
=
(
x
2
,
y
2
,
0
)
a
×
b
=
∣
i
j
k
x
1
y
1
0
x
2
y
2
0
∣
=
(
x
3
,
y
3
,
z
3
)
=
(
3
)
=
0
i
−
0
j
+
(
x
1
y
2
−
x
2
y
1
)
k
则
:
∣
C
′
(
u
)
×
C
′
′
(
u
)
∣
=
(
x
1
y
2
−
x
2
y
1
)
2
(
4
)
\begin{aligned} &\mathbf{a}=(x_1,y_1,0)\\ &\mathbf{b}=(x_2,y_2,0)\\ &\mathbf{a}\times \mathbf{b}=\left| \begin{matrix} i & j & k\\ x_1 & y_1 & 0\\ x_2 & y_2 & 0\\ \end{matrix} \right|=(x_3,y_3,z_3)=\quad \quad \quad (3)\\ \\ &\quad \quad \quad= 0i-0j+(x_1y_2-x_2y_1)k\\ 则:\\ &|C^{'}(u)\times C^{''}(u)|=\sqrt{(x_1y_2-x_2y_1)^2}\quad \quad (4)\\ \end{aligned}
则:a=(x1,y1,0)b=(x2,y2,0)a×b=∣∣∣∣∣∣ix1x2jy1y2k00∣∣∣∣∣∣=(x3,y3,z3)=(3)=0i−0j+(x1y2−x2y1)k∣C′(u)×C′′(u)∣=(x1y2−x2y1)2(4)
现在考虑参数方程:
C
(
u
)
=
{
x
(
u
)
,
y
(
u
)
C(u)= \begin{cases} x(u),\\ y(u) \end{cases}
C(u)={x(u),y(u)
由高等数学知识得到:
K
=
∣
x
′
(
u
)
y
′
′
(
u
)
−
x
′
′
(
u
)
y
′
(
u
)
∣
∣
x
′
2
(
u
)
+
y
′
2
(
u
)
∣
3
2
变
量
带
入
分
子
即
为
:
(
x
1
y
2
−
x
2
y
1
)
2
,
与
公
式
(
3
)
(
4
)
得
到
的
结
果
一
致
.
K=\frac{|x^{'}(u)y^{''}(u)-x^{''}(u)y^{'}(u)|}{|x^{'2}(u)+y^{'2}(u)|^{\frac{3}{2}}}\\ \\ \\ \\ 变量带入分子即为:\sqrt{(x_1y_2-x_2y_1)^2},与公式(3)(4)得到的结果一致.\\
K=∣x′2(u)+y′2(u)∣23∣x′(u)y′′(u)−x′′(u)y′(u)∣变量带入分子即为:(x1y2−x2y1)2,与公式(3)(4)得到的结果一致.
数学就是这么奇妙啊!!!
方法验证–3次B-Spline曲线
n = 12 #n+1个控制点
p = 3 #3次yB-Spline曲线
m = n+p+1 #m+1个参数节点
knots = [0,0,0,0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,1,1,1]
x = [1,2,3,4,5,6,7,8,9,10,11,12,13] #控制点坐标
y = [1,1,1,1,1,2,1,1,1,1,1,1,1]
结果如下: