svg 画箭头

这几天想做一个svg画图的小工具。需要画箭头,知道和三角函数有关,但已经忘的差不多了,于是在网上耙了一个基于flex画箭头的代码,稍加改动,在SVG上试验成功。
记录如下:

function getArrowKeypoints(startX,startY,endX,endY){
    //    L/_C_\R
    var arrowRadius = 6;   //箭头尺寸大小就靠它了
    var pointsXY = [0,0,0,0,0,0];
    //根据关系直线起至坐标获得线的夹角
    var tmpx = endX - startX ;
    var tmpy = startY - endY;
    var angle = Math.atan2(tmpy,tmpx)*(180/Math.PI);
   
    var centerX = endX - arrowRadius * Math.cos(angle *(Math.PI/180)) ;
    var centerY = endY + arrowRadius * Math.sin(angle *(Math.PI/180)) ;
    var topX = endX ;
    var topY = endY          
    var leftX = centerX + arrowRadius * Math.cos((angle +120) *(Math.PI/180));
    var leftY = centerY - arrowRadius * Math.sin((angle +120) *(Math.PI/180));
    var rightX = centerX + arrowRadius * Math.cos((angle +240) *(Math.PI/180));
    var rightY = centerY - arrowRadius * Math.sin((angle +240) *(Math.PI/180));
     
      pointsXY[0] = leftX;
      pointsXY[1] = leftY;
      pointsXY[2] = centerX;   在箭身靠终点的一个点,这样画箭头更漂亮些
      pointsXY[3] = centerY;
      pointsXY[4] = rightX;
      pointsXY[5] = rightY;
      //pointsXY[6] = ;
      //pointsXY[7] = ;
      return pointsXY;
}

x0-startX y0->startY x1->endX y1->endY
SVG:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值