public boolean pointIsOnArc(final Point point) {
		if (getStartPoint().equals(point) || getEndPoint().equals(point)) {
			return true;
		}
		double difference = Math.abs(getCircle().getCenter().distanceSq(point) - Math.pow(getCircle().getRadius(), 2.0));
		if (difference <= 0.5) {
			double ah = Math.abs(point.getX() - getCircle().getCenterX()) / getCircle().getRadius();
			double angle = Math.toDegrees(Math.acos(ah));
			if (point.getX() < getCircle().getCenterX() &&
					point.getY() < getCircle().getCenterY()) {
				angle = 180.0 - angle;
			}
			else if (point.getX() < getCircle().getCenterX() &&
					point.getY() >= getCircle().getCenterY()) {
				angle += 180.0;
			}
			else if (point.getX() > getCircle().getCenterX() &&
					point.getY() >= getCircle().getCenterY()) {
				angle = 360.0 - angle;
			}
			return isBetweenStartAndEndAngle(angle);
		}
		return false;
	}