比如说我把两个“相同”等腰三角形拼出一个菱形,我把每条边都标上单箭头,而且方向
现在如果要标上单双箭头,比如这种
有没人,有思路或者方法呢?
谢谢
比如说我把两个“相同”等腰三角形拼出一个菱形,我把每条边都标上单箭头,而且方向
现在如果要标上单双箭头,比如这种
有没人,有思路或者方法呢?
谢谢
你好同学,给你特制了一个函数,随时调用
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)
效果:
有帮助还请题主给个宝贵的采纳支持一下答主答题哟