离散点的曲率计算

您所在的位置:网站首页 曲率怎样求 离散点的曲率计算

离散点的曲率计算

2023-07-28 01:31| 来源: 网络整理| 查看: 265

描述

我有一个点集,里面都是[x,y]这样的二维点,这个点集能形成一个曲线。 在并不想去求这个曲线的表达式时,怎么得到某一点的曲率呢

相关知识

曲率的定义是: 针对曲线上某个点的切线方向角对弧长的转动率,而曲率的倒数就是曲率半径 K    =    ∣ Δ θ l ∣    =    ∣ 1 r ∣    K\; =\; \left| \frac{\Delta \theta }{l} \right|\; =\; \left| \frac{1}{r} \right|\; K=∣ ∣​lΔθ​∣ ∣​=∣ ∣​r1​∣ ∣​

式子中 K K K代表的就是曲率, Δ θ Δθ Δθ代表的就是切线方向角的变化, l l l代表弧长, r r r代表的就是曲率半径

式子也挺好看懂的。我们都知道圆的周长是 2 π r 2πr 2πr,任意一段弧长 的计算方式是 l    =    θ    ⋅    r l\; =\; \theta \; \cdot \; r l=θ⋅r

式子中的 θ θ θ代表的就是弧长对应的角度

解决

我有一段圆弧ab,对应的圆内角 θ θ θ是啥我不用解释了吧,初中数学 在这里插入图片描述

那么到这儿也比较简单了,如果离散点中,ab就是相邻的两个点,那么a点(或者b点或者随便哪个点)的曲率怎么计算呢

我们设要求的点 p p p,在点集 P P P 的位置是 i i i ,点集实际上是 0 0 0 到 n n n 的一系列二维点,那么点p的曲率 K i K_{i} Ki​的表达式是 K i    =    ∣ arctan ⁡ ( y i + 2    −    y i + 1 x i + 2    −    x i + 1 )    −    arctan ⁡ ( y i + 1    −    y i x i + 1    −    x i ) ( x i + 1    −    x i ) 2 + ( y i + 1    −    y i ) 2 ∣ K_{i\; }=\; \left| \frac{\arctan \left( \frac{y_{i+2}\; -\; y_{i+1}}{x_{i+2}\; -\; x_{i+1}} \right)\; -\; \arctan \left( \frac{y_{i+1}\; -\; y_{i}}{x_{i+1}\; -\; x_{i}} \right)}{\sqrt{\left( x_{i+1}\; -\; x_{i} \right)^{2}+\left( y_{i+1}\; -\; y_{i} \right)^{2}}} \right| Ki​=∣ ∣​(xi+1​−xi​)2+(yi+1​−yi​)2 ​arctan(xi+2​−xi+1​yi+2​−yi+1​​)−arctan(xi+1​−xi​yi+1​−yi​​)​∣ ∣​

挺好理解的,下面的是两点之间的距离,上面是切线方向角之差,不解释啦

补充

上面计算方式写的很清楚了,但其实有个小小问题 假设我有100个点,按照上面的公式,第1个点到第98个点都是可以很快计算出来的。

但99个点和100个点,因为没有101和102两个点,这两个点的曲率是无法计算的。

解决办法也很简单:

我使用离散点曲率计算,主要是在路径规划当中使用,我的这个离散点集在最后两个点上,实际上可以认为是路径终点,需要轨迹很平滑的。我的操作就是,将最后两个点的曲率,赋值成了倒数第三个点一样,问题应该不大。你可以根据自己的需求任意设置。如果你就是不想自己设定,非要计算的来。造102个点,使用前100个,造n+2个点,使用前n个。(挺无聊的解决办法哈)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3