text: define(["dojo/_base/declare", "dojo/_base/lang", "./PlotUtil"], 
      function (declare, lang, PlotUtil) {
      var clazz = declare([], {
          //平头箭头
          constructor: function (options) {
              if (this.id == null) {
                  this.id = "SimpleArrowDrawer"
              }
          },
          headHeightFactor: 0.15,
          headWidthFactor: 0.4,
          neckHeightFactor: 0.75,
          neckWidthFactor: 0.15,
          tailWidthFactor: 0.1,
          headRightPnt: null,
          neckPnt: null,
          getPoints: function (points) {
              this.createControlPoints(points);
              var pointsLen = points.length;
              if (pointsLen >= 2 && points[(pointsLen - 1)] != points[pointsLen - 2]) {
                  return PlotUtil.getArrowPlot(points, false, 0, PlotUtil.USEBSPLINEFIT, this.headHeightFactor, this.headWidthFactor, this.neckHeightFactor, this.neckWidthFactor, this.tailWidthFactor)
              }
              return null
          },
          createControlPoints: function (points) {
              var bLen = PlotUtil.getBaseLength(points);
              var bLen1 = bLen * this.headHeightFactor;
              var bLen2 = bLen1 * this.headWidthFactor;
              var pntsLen = points.length;
              var pntLast = points[(pntsLen - 1)];
              var disPnts = PlotUtil.distance(pntLast, points[pntsLen - 2]);
              bLen1 = bLen1 > disPnts ? (disPnts) : (bLen1);
              var bLen3 = bLen1 * this.neckHeightFactor;
              var thirdPnt1 = PlotUtil.getThirdPoint(points[pntsLen - 2], pntLast, 0, bLen1, PlotUtil.LEFT_SIDE);
              var thirdPnt2 = PlotUtil.getThirdPoint(points[pntsLen - 2], pntLast, 0, bLen3, PlotUtil.LEFT_SIDE);
              var thirdPnt3 = PlotUtil.getThirdPoint(pntLast, thirdPnt1, Math.PI * 1.5, bLen2, PlotUtil.LEFT_SIDE);
              this.headRightPnt = thirdPnt3;
              this.neckPnt = thirdPnt2;
              return
          }
      });
      return clazz
  });
  