相信心心 2021-10-26 22:26 采纳率: 100%
浏览 18
已结题

matlab中有线段标记符号,上三角下三角之类,但这种方向不随曲线指向,要怎么实现这种吗?能实现吗?想问问。

比如说我把两个“相同”等腰三角形拼出一个菱形,我把每条边都标上单箭头,而且方向

img

现在如果要标上单双箭头,比如这种

img

有没人,有思路或者方法呢?
谢谢

  • 写回答

1条回答 默认 最新

  • 技术专家团-Joel 2021-10-26 23:33
    关注

    你好同学,给你特制了一个函数,随时调用

    function multiarrow(p1, p2, arrowType, arrowRatio)
    % p1起始点
    % p2终止点
    % arrowType三种
    % arrowRatio箭头大小与线本身长度的比例
    if(nargin==3)
        arrowRatio = 0.1;
    end
    T1 = [cosd(150), sind(150); -sind(150), cosd(150)];
    T2 = [cosd(150), -sind(150); sind(150), cosd(150)];
    L = norm(p2-p1);
    pmid = (p1+p2)/2;
    ep = (p2-p1)/L;
    d1 = ep*(T1');
    d2 = ep*(T2');
    p3 = pmid + d1*arrowRatio*L;
    p4 = pmid + d2*arrowRatio*L;
    switch(arrowType)
        case {'solidarrow'}
            plot([p1(1),p2(1)],[p1(2),p2(2)],'k-')
            hold on
            patch('vertices',[pmid;p3;p4],'faces',[1,2,3],'facecolor','k','edgecolor','k')
        case {'linearrow'}
            plot([p1(1),p2(1)],[p1(2),p2(2)],'k')
            hold on
            plot([pmid(1),p3(1)],[pmid(2),p3(2)],'k-',[pmid(1),p4(1)],[pmid(2),p4(2)],'k-')
        case {'doublelinearrow'}
            plot([p1(1),p2(1)],[p1(2),p2(2)],'k')
            hold on
            plot([pmid(1),p3(1)],[pmid(2),p3(2)],'k-',[pmid(1),p4(1)],[pmid(2),p4(2)],'k-')
            pmid = pmid +ep*arrowRatio*L;
            p3 =  pmid + d1*arrowRatio*L;
            p4 =  pmid + d2*arrowRatio*L;
            plot([pmid(1),p3(1)],[pmid(2),p3(2)],'k-',[pmid(1),p4(1)],[pmid(2),p4(2)],'k-')
    end
    axis equal
    end
    

    调用示例

    multiarrow([0,1], [1,2], 'solidarrow', 0.1)
    multiarrow([0,0], [1,1], 'doublelinearrow', 0.1)
    multiarrow([1,0], [2,1], 'linearrow', 0.1)
    

    效果:

    img

    有帮助还请题主给个宝贵的采纳支持一下答主答题哟

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月4日
  • 已采纳回答 10月27日
  • 创建了问题 10月26日

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)