计算机手绘图形曲率的计算

来源:百度知道 编辑:UC知道 时间:2024/06/30 17:56:29
我用MFC画图,画了一条线(并非直线),并用数组记录了该线上所有的点,我想算出该条线上某一个点的曲率或所有点的曲率,请问该怎么算?若有代码更好。ps:我只有该线经过的所有点的数据,并不知道该线的函数。

最简单的是用相邻3点作圆,圆的半径就是曲率半径,它的倒数就是曲率。
A = b_0 - a_0;
B = b_1 - a_1;
C = c_0 - a_0;
D = c_1 - a_1;
E = A*(a_0 + b_0) + B*(a_1 + b_1);
F = C*(a_0 + c_0) + D*(a_1 + c_1);
G = 2.0*(A*(c_1 - b_1)-B*(c_0 - b_0));
p_0 = (D*E - B*F) / G;
p_1 = (A*F - C*E) / G;
r^2 = (a_0 - p_0)^2 + (a_1 - p_1)^2

半径 r。3点 a, b, c。坐标 a_0 a_1 b_0 b_1 c_0 c_1.
循环,算出所有点的 曲率

精确一点,用样条函数拟合,再求曲率。