code: function(x, y, centerX, centerY, width, height, direction, padding){
      var x1 = centerX - width/2;
      var x2 = centerX + width/2;
      var y1 = centerY - height/2;
      var y2 = centerY + height/2;
  
      return (x1 <= x && x <= x2) && (y1 <= y && y <= y2);
    }
docs: Contract for arrow shapes: 0, 0 is arrow tip (0, 1) is direction towards node (1, 0) is right  functional api: collide: check x, y in shape roughCollide: called before collide, no false negatives draw: draw spacing: dist(arrowTip, nodeBoundary) gap: dist(edgeTip, nodeBoundary), edgeTip may != arrowTip