public Point2D.Double getPointInNeighborhood(double dist, Point2D p1, Point2D p2) {
		if (p1 == null || p2 == null) {
			throw new IllegalArgumentException();
		}
		if (dist <= 0) {
			throw new IllegalArgumentException();
		}
		final double v1 = Singularity2.convertAngle(Singularity2.getAngle(new Line2D.Double(center, p1)) - angle1);
		final double v2 = Singularity2.convertAngle(Singularity2.getAngle(new Line2D.Double(center, p2)) - angle1);
		if (v1 < 0) {
			throw new IllegalStateException();
		}
		if (v2 < 0) {
			throw new IllegalStateException();
		}
		final double middle = (v1 + v2) / 2 + angle1;
		return new Point2D.Double(center.x + dist * Math.cos(middle), center.y + dist * Math.sin(middle));
	}