code: private void drawArrow(Graphics g, Point head, Point away) {
  		int endX, endY;
  		double angle = Math.atan2((double) (away.x - head.x),
  				(double) (away.y - head.y));
  		angle += ARROW_ANGLE;
  		endX = ((int) (Math.sin(angle) * ARROW_LENGTH)) + head.x;
  		endY = ((int) (Math.cos(angle) * ARROW_LENGTH)) + head.y;
  		g.drawLine(head.x, head.y, endX, endY);
  		angle -= 2 * ARROW_ANGLE;
  		endX = ((int) (Math.sin(angle) * ARROW_LENGTH)) + head.x;
  		endY = ((int) (Math.cos(angle) * ARROW_LENGTH)) + head.y;
  		g.drawLine(head.x, head.y, endX, endY);
  	}
docs: Draws an arrow head on the graphics object. The arrow geometry is based
  on the point of its head as well as another point, which the arrow is
  defined as facing away from. This arrow head has no body.
  
  @param g
  the graphics object to draw upon
  @param head
  the point that is the point of the head of the arrow
  @param away
  the point opposite from where the arrow is pointing, a point
  along the line segment extending from the head backwards from
  the head if this were an arrow with a line trailing the head