在很多学科中的很多计算任务中都需要用到曲线的曲率(或者曲率半径),numpy库里和matlab build-in里都没有现成的能从离散点来算曲率的方法,网上找到的代码又不敢直接用,毕竟是要高频率用到自己科研上的工具,所以决定结合找到的资料自己推一下,并造出python和matlab的轮子,造福后人
公式很简单:
曲率:
在二维情况下,其标量形式为:
所以对于解析情况非常简单,可以直接对于曲线表达式进行解析求导,但是对于离散的点,情况反倒会比较复杂,因为这里的x和y的一阶和二阶导数如果直接用差分方法来计算的话会造成比较大的误差。
这里比较保险的做法是,使用三个点确定的二次曲线的的曲率作为我们估计的曲率: