樣條曲線(參數曲線)曲率

曲率計算公式

設參數曲線C(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)

其中:
C(u)C(u)C(u)×C(u) \begin{aligned} &C^{'}(u) 爲一階導數 \\ &C^{''}(u) 爲二階導數 \\ &C^{'}(u)\times C^{''}(u) 爲一階導數和二階導數的叉乘 \\ \end{aligned}

叉乘公式

設置兩個向量:
a=(x1,y1,z1)b=(x2,y2,z2)a×b=ijkx1y1z1x2y2z2=(x3,y3,z3)=(2)=(y1z2y2z1)i(x1z2x2z1)j+(x1y2x2y1)k![](https://imgblog.csdnimg.cn/20200629105532329.PNG?xossprocess=image/watermark,typeZmFuZ3poZW5naGVpdGk,shadow10,textaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhbm1pbmdqdW52NQ==,size16,colorFFFFFF,t70) \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![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200629105532329.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhbm1pbmdqdW52NQ==,size_16,color_FFFFFF,t_70) \end{aligned}

3-D曲線曲率計算

計算三次樣條曲線曲率:
C(u)=(x1,y1,z1)C(u)=(x2,y2,z2)C(u)=x12+y12+z12(2)C(u)×C(u)=x32+y32+z32 \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}

2-D曲線曲率計算

2-D曲線的曲率計算時,依然可以使用前文使用的公式,此時,設置z座標值爲0即可:
a=(x1,y1,0)b=(x2,y2,0)a×b=ijkx1y10x2y20=(x3,y3,z3)=(3)=0i0j+(x1y2x2y1)kC(u)×C(u)=(x1y2x2y1)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}
現在考慮參數方程:
C(u)={x(u),y(u) C(u)= \begin{cases} x(u),\\ y(u) \end{cases}
由高等數學知識得到:
K=x(u)y(u)x(u)y(u)x2(u)+y2(u)32(x1y2x2y1)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)得到的結果一致.\\

數學就是這麼奇妙啊!!!

方法驗證–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]

結果如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章