docs: function _drawArc(canvas, ctx, params, path) {
  	var x1, y1, x2, y2,
  		x3, y3, x4, y4,
  		offsetX, offsetY,
  		diff;
  
  	// Determine offset from dragging
  	if (params === path) {
  		offsetX = 0;
  		offsetY = 0;
  	} else {
  		offsetX = params.x;
  		offsetY = params.y;
  	}
  
  	// Convert default end angle to radians
  	if (!path.inDegrees && path.end === 360) {
  		path.end = PI * 2;
  	}
  
  	// Convert angles to radians
  	path.start *= params._toRad;
  	path.end *= params._toRad;
  	// Consider 0deg due north of arc
  	path.start -= (PI / 2);
  	path.end -= (PI / 2);
  
  	// Ensure arrows are pointed correctly for CCW arcs
  	diff = PI / 180;
  	if (path.ccw) {
  		diff *= -1;
  	}
  
  	// Calculate coordinates for start arrow
  	x1 = _getArcX(path, path.start + diff);
  	y1 = _getArcY(path, path.start + diff);
  	x2 = _getArcX(path, path.start);
  	y2 = _getArcY(path, path.start);
  
  	_addStartArrow(
  		canvas, ctx,
  		params, path,
  		x1, y1,
  		x2, y2
  	);
  
  	// Draw arc
  	ctx.arc(path.x + offsetX, path.y + offsetY, path.radius, path.start, path.end, path.ccw);
  
  	// Calculate coordinates for end arrow
  	x3 = _getArcX(path, path.end + diff);
  	y3 = _getArcY(path, path.end + diff);
  	x4 = _getArcX(path, path.end);
  	y4 = _getArcY(path, path.end);
  
  	_addEndArrow(
  		canvas, ctx,
  		params, path,
  		x4, y4,
  		x3, y3
  	);
  }