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

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

img

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

img

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

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

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

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