您的位置:首页 > 编程语言 > MATLAB

使用MATLAB计算点到直线距离

2014-06-28 22:54 2703 查看
给定平面上 x1, x2, x3三个点,求x1到x2、x3之间的直线的距离。

我是用的是内积的方法求解,依据原理是使用内积求出直线x2x1 与 直线x3x1的夹角cos值,进而求出sin值,再求出x1到x2x3的距离。

这种方法的不足之处是,当三点之中有点重合时,需要特殊判断;而且使用到了除法与开根号,降低了速度。

代码如下:

x1=[1 ;0];

x2=[0 ;1];

x3=[1 ;0];

vx1x2 = x2 - x1;%向量x1到x2

vx1x3 = x3 - x1;%向量x1到x3

if 0 == vx1x2'* vx1x2 %如果x1与x2重合,注意,对浮点数采用等于0的判断不可靠

    dis = 0

elseif 0 == vx1x3'*vx1x3%如果x1与x3重合,这种情况下距离是否为0需要自己定义

    dis = 0

else

    inner_product = vx1x2' * vx1x3;%两个向量内积

    inner_product_2 = inner_product * inner_product;%内积平方

    cos_2 = inner_product_2 / (vx1x2'* vx1x2) / (vx1x3'*vx1x3);%夹角cos值的平方

    sin_2 = 1 - cos_2;%夹角sin的平方

    dis_2 = (vx1x3'*vx1x3) * sin_2;

    dis = sqrt(dis_2)%距离

end

        
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab