离散点曲率计算
离散点曲率计算
1. 单位切向量T\mathbf{T}T
对于一个参数化曲线r(t)=(x(t),y(t))\mathbf{r}(t) = (x(t), y(t))r(t)=(x(t),y(t)),其单位切向量T\mathbf{T}T定义为:
T=r′(t)∥r′(t)∥=(x′(t)(x′(t))2+(y′(t))2,y′(t)(x′(t))2+(y′(t))2)\mathbf{T} = \frac{\mathbf{r}'(t)}{\|\mathbf{r}'(t)\|} = \left( \frac{x'(t)}{\sqrt{(x'(t))^2 + (y'(t))^2}}, \frac{y'(t)}{\sqrt{(x'(t))^2 + (y'(t))^2}} \right)T=∥r′(t)∥r′(t)=((x′(t))2+(y′(t))2x′(t),(x′(t))2+(y′(t))2y′(t))
这里,x′(t)x'(t)x′(t)和y′(t)y'(t)y′(t)分别是x(t)x(t)x(t)和y(t)y(t)y(t)对参数ttt的一阶导数。
2. 法向量N\mathbf{N}N
法向量N\mathbf{N}N是与T\mathbf{T}T垂直的单位向量,指向曲线凹侧。在二维情况下,可以通过旋转T\mathbf{T}T向量90∘90^\circ90∘来获得N\mathbf{N}N:
N=(−sin(θ),cos(θ))=(−y′(t)(x′(t))2+(y′(t))2,x′(t)(x′(t))2+(y′(t))2)\mathbf{N} = (-\sin(\theta), \cos(\theta)) = \left( -\frac{y'(t)}{\sqrt{(x'(t))^2 + (y'(t))^2}}, \frac{x'(t)}{\sqrt{(x'(t))^2 + (y'(t))^2}} \right)N=(−sin(θ),cos(θ))=(−(x′(t))2+(y′(t))2y′(t),(x′(t))2+(y′(t))2x′(t))
其中,θ\thetaθ是T\mathbf{T}T与xxx-轴之间的夹角。
3. 曲率公式的推导
曲率KKK定义为单位切向量T\mathbf{T}T的变化率对弧长sss的导数:
K=∣dTds∣K = \left|\frac{d\mathbf{T}}{ds}\right|K=dsdT
由于我们通常使用参数ttt而不是弧长sss,因此需要应用链式法则:
K=∣dTdtdtds∣=∣dT/dt∥r′(t)∥∣K = \left|\frac{d\mathbf{T}}{dt}\frac{dt}{ds}\right| = \left|\frac{d\mathbf{T}/dt}{\|\mathbf{r}'(t)\|}\right|K=dtdTdsdt=∥r′(t)∥dT/dt
接下来,我们考虑T\mathbf{T}T的变化率dTdt\frac{d\mathbf{T}}{dt}dtdT。根据T\mathbf{T}T的定义,可以写出:
T=(x′(t)∥r′(t)∥,y′(t)∥r′(t)∥)\mathbf{T} = \left( \frac{x'(t)}{\|\mathbf{r}'(t)\|}, \frac{y'(t)}{\|\mathbf{r}'(t)\|} \right)T=(∥r′(t)∥x′(t),∥r′(t)∥y′(t))
对T\mathbf{T}T求导,利用商法则和链式法则,我们得到:
dTdt=(x′′(t)∥r′(t)∥−x′(t)ddt∥r′(t)∥∥r′(t)∥2,y′′(t)∥r′(t)∥−y′(t)ddt∥r′(t)∥∥r′(t)∥2)\frac{d\mathbf{T}}{dt} = \left( \frac{x''(t)\|\mathbf{r}'(t)\| - x'(t)\frac{d}{dt}\|\mathbf{r}'(t)\|}{\|\mathbf{r}'(t)\|^2}, \frac{y''(t)\|\mathbf{r}'(t)\| - y'(t)\frac{d}{dt}\|\mathbf{r}'(t)\|}{\|\mathbf{r}'(t)\|^2} \right)dtdT=(∥r′(t)∥2x′′(t)∥r′(t)∥−x′(t)dtd∥r′(t)∥,∥r′(t)∥2y′′(t)∥r′(t)∥−y′(t)dtd∥r′(t)∥)
注意到∥r′(t)∥=(x′(t))2+(y′(t))2\|\mathbf{r}'(t)\| = \sqrt{(x'(t))^2 + (y'(t))^2}∥r′(t)∥=(x′(t))2+(y′(t))2,则:
ddt∥r′(t)∥=x′(t)x′′(t)+y′(t)y′′(t)∥r′(t)∥\frac{d}{dt}\|\mathbf{r}'(t)\| = \frac{x'(t)x''(t) + y'(t)y''(t)}{\|\mathbf{r}'(t)\|}dtd∥r′(t)∥=∥r′(t)∥x′(t)x′′(t)+y′(t)y′′(t)
将上述结果代入dTdt\frac{d\mathbf{T}}{dt}dtdT中,并简化表达式,我们最终得到:
dTdt=(x′′(t)∥r′(t)∥2−x′(t)(x′(t)x′′(t)+y′(t)y′′(t))∥r′(t)∥3,y′′(t)∥r′(t)∥2−y′(t)(x′(t)x′′(t)+y′(t)y′′(t))∥r′(t)∥3)\frac{d\mathbf{T}}{dt} = \left( \frac{x''(t)\|\mathbf{r}'(t)\|^2 - x'(t)(x'(t)x''(t) + y'(t)y''(t))}{\|\mathbf{r}'(t)\|^3}, \frac{y''(t)\|\mathbf{r}'(t)\|^2 - y'(t)(x'(t)x''(t) + y'(t)y''(t))}{\|\mathbf{r}'(t)\|^3} \right)dtdT=(∥r′(t)∥3x′′(t)∥r′(t)∥2−x′(t)(x′(t)x′′(t)+y′(t)y′′(t)),∥r′(t)∥3y′′(t)∥r′(t)∥2−y′(t)(x′(t)x′′(t)+y′(t)y′′(t)))
这可以进一步简化为:
dTdt=1∥r′(t)∥3(x′′(t)∥r′(t)∥2−x′(t)2x′′(t)−x′(t)y′(t)y′′(t),y′′(t)∥r′(t)∥2−y′(t)2y′′(t)−x′(t)y′(t)x′′(t))\frac{d\mathbf{T}}{dt} = \frac{1}{\|\mathbf{r}'(t)\|^3} \left( x''(t)\|\mathbf{r}'(t)\|^2 - x'(t)^2x''(t) - x'(t)y'(t)y''(t), y''(t)\|\mathbf{r}'(t)\|^2 - y'(t)^2y''(t) - x'(t)y'(t)x''(t) \right)dtdT=∥r′(t)∥31(x′′(t)∥r′(t)∥2−x′(t)2x′′(t)−x′(t)y′(t)y′′(t),y′′(t)∥r′(t)∥2−y′(t)2y′′(t)−x′(t)y′(t)x′′(t))
=1∥r′(t)∥3(x′′(t)(x′(t)2+y′(t)2)−x′(t)2x′′(t)−x′(t)y′(t)y′′(t),y′′(t)(x′(t)2+y′(t)2)−y′(t)2y′′(t)−x′(t)y′(t)x′′(t))= \frac{1}{\|\mathbf{r}'(t)\|^3} \left( x''(t)(x'(t)^2 + y'(t)^2) - x'(t)^2x''(t) - x'(t)y'(t)y''(t), y''(t)(x'(t)^2 + y'(t)^2) - y'(t)^2y''(t) - x'(t)y'(t)x''(t) \right)=∥r′(t)∥31(x′′(t)(x′(t)2+y′(t)2)−x′(t)2x′′(t)−x′(t)y′(t)y′′(t),y′′(t)(x′(t)2+y′(t)2)−y′(t)2y′′(t)−x′(t)y′(t)x′′(t))
=1∥r′(t)∥3(x′(t)y′′(t)−y′(t)x′′(t),−(x′(t)x′′(t)−y′(t)y′′(t)))= \frac{1}{\|\mathbf{r}'(t)\|^3} \left( x'(t)y''(t) - y'(t)x''(t), -(x'(t)x''(t) - y'(t)y''(t)) \right)=∥r′(t)∥31(x′(t)y′′(t)−y′(t)x′′(t),−(x′(t)x′′(t)−y′(t)y′′(t)))
可以看到,dTdt\frac{d\mathbf{T}}{dt}dtdT实际上是沿着法向量N\mathbf{N}N方向的变化,因为它是T\mathbf{T}T的正交补空间中的分量。因此,我们可以将其写成:
dTdt=KN\frac{d\mathbf{T}}{dt} = K \mathbf{N}dtdT=KN
这里的KKK就是我们要找的曲率,它表示单位切向量沿法向量方向的变化率。结合之前提到的链式法则,我们有:
K=∣dTdtdtds∣=∣dT/dt∥r′(t)∥∣K = \left|\frac{d\mathbf{T}}{dt}\frac{dt}{ds}\right| = \left|\frac{d\mathbf{T}/dt}{\|\mathbf{r}'(t)\|}\right|K=dtdTdsdt=∥r′(t)∥dT/dt
将dTdt\frac{d\mathbf{T}}{dt}dtdT的表达式代入,并取模长,我们最终得到:
K=∣x′y′′−y′x′′∣(x′2+y′2)3/2K = \frac{|x'y'' - y'x''|}{(x'^2 + y'^2)^{3/2}}K=(x′2+y′2)3/2∣x′y′′−y′x′′∣
这就是为什么我们可以用∣dx⋅ddy−dy⋅ddx∣(dx2+dy2)3/2\frac{|dx \cdot ddy - dy \cdot ddx|}{(dx^2 + dy^2)^{3/2}}(dx2+dy2)3/2∣dx⋅ddy−dy⋅ddx∣来计算曲率的原因。这种形式不仅简洁而且便于数值计算,尤其是在处理离散数据点时。
总结
通过上述推导,我们从单位切向量T\mathbf{T}T和法向量N\mathbf{N}N的关系出发,逐步构建了曲率的表达式。这个过程展示了如何从几何直观过渡到具体的数学公式,揭示了曲率作为描述曲线弯曲程度的关键概念。这种方法不仅适用于理论分析,也广泛应用于实际工程和技术领域中的曲线拟合和形状分析。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)