matlab两点间箭头连接

话不都说,直接动手:

function drawArrow(x,y,lineType,color,ax)
    switch nargin
        case 2
            lineType='arrow';
            ax=gca;
            color='b';
        case 3
            ax=gca;
            color='b';
        case 4
            ax=gca;
    end
    if length(x)<2
       disp('input data dim must bigger than 2!!!')
       return; 
    end
    dim=length(x);
    xlim=ax.XLim;
    ylim=ax.YLim;
    xlimmin=xlim(1);xlimmax=xlim(2);
    ylimmin=ylim(1);ylimmax=ylim(2);
    if xlimmin>min(x), xlimmin=min(x);end
    if xlimmax<max(x), xlimmax=max(x);end
    if ylimmin>min(y), ylimmin=min(y);end
    if ylimmax<max(y), ylimmax=max(y);end
    ax.XLim = [xlimmin,xlimmax];
    ax.YLim = [ylimmin,ylimmax];
    xlim=ax.XLim;
    ylim=ax.YLim;
    %获取图像原点数据
    pos=ax.Position;
     % 计算缩放比例
    x_ratio = pos(3)/(xlim(2)-xlim(1));
    y_ratio = pos(4)/(ylim(2)-ylim(1));
    %计算缩放后相对原点的距离
    x=(x-xlim(1)).*x_ratio;y=(y-ylim(1)).*y_ratio;
    %缩放后的坐标
    x=x+pos(1);y=y+pos(2);
    for i=1:dim-1
        annotation(lineType,[x(i) x(i+1)],[y(i) y(i+1)],'Color',color);
    end
end

基本思路:

获取当前图片的缩放比例,计算输入点相对图像原点的缩放后的相对距离,然后根据图像原点和相对距离画图。

本代码适用任意坐标的两点间,和多点间用箭头连接的情况,且不要求坐标范围在0-1之间,比较通用。

例子:

 

 

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱拼就为银

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值