private boolean crossingInternal(Point2D.Double direction1, Point2D.Double direction2) {
		if (angles.size() < 2) {
			return false;
		}
		final double angle1 = convertAngle(getAngle(new Line2D.Double(center, direction1)));
		final double angle2 = convertAngle(getAngle(new Line2D.Double(center, direction2)));

		Double last = null;
		for (Double current : angles) {
			if (last != null) {
				assert last < current;
				if (isBetween(angle1, last, current) && isBetween(angle2, last, current)) {
					return false;
				}
			}
			last = current;
		}
		final double first = angles.first();
		if ((angle1 <= first || angle1 >= last) && (angle2 <= first || angle2 >= last)) {
			return false;
		}
		return true;
	}