Matlab - 沿有序周长计算曲率

时间:2016-06-22 09:59:38

标签: matlab math contour

我找到了一个小数学表达式来找到有序周长的曲率。我使用函数bwboundaries得到了有序的边界。

要使用它,我开始定义三个坐标p1,p2和p3,它们是列向量x,y。

    % the part above extract the three coordinates into row vectors y,x.
    % That's why I flip and transpose them.

    p1=outlineCoords(i,:);
    p2=outlineCoords2;
    p3=outlineCoords3;

    p1 = fliplr(p1);
    p2 = fliplr(p2);
    p3 = fliplr(p3);

    p1 = p1.';
    p2 = p2.';
    p3 = p3.';

这是数学表达式:

curVec(i) = 2*det([p1-p3,p2-p1])/(norm(p1-p3)*norm((p2-p1)*norm(p2-p3)));

我不喜欢使用我不理解的东西。我认为对于我的轮廓的每个点,它通过p1,p2和p3拟合一个圆并取半径的倒数但我不明白为什么它给我曲率...

我使用从蓝色到红色的颜色代码绘制曲率。

draw of the curvature with a color code

有人可以帮助我更好地理解我正在处理的事情!?

谢谢!

1 个答案:

答案 0 :(得分:1)

在矢量微积分中,曲率与二阶导数有关。第一个是切线。你必须以神秘的方式扭转这个等式,以显示它的推导;这是我做不到的。但是,基于我已经知道的曲率,我已经多次得到那个和其他类似的公式。

以下是关于该主题的微积分说明。你看它与你的等式非常相似:

Calculus III - Curvature