static Point normalize(Point p) { return Point.divide(p, PointUtil.length(p)); }
/** * Returns the center of a list of points. * @param points The list of points * @return A new point indicating the center of the given points. */ public static Point centroid(Iterable<Point> points) { int size = 0; Point sumPoint = new Point(0, 0); for (final Point p : points) { sumPoint = Point.add(sumPoint, p); size++; } return divide(sumPoint, size); }
/** * Returns the center of a list of points. * @param points The list of points * @return A new point indicating the center of the given points. */ public static Point centroid(Iterable<Point> points) { int size = 0; Point sumPoint = new Point(0, 0); for (final Point p : points) { sumPoint = Point.add(sumPoint, p); size++; } return divide(sumPoint, size); }
static void addPath(Graph<?> graph, Point... points) { final List<Point> newPoints = newArrayList(); for (int i = 0; i < points.length - 1; i++) { final double dist = Point.distance(points[i], points[i + 1]); final Point unit = Point.divide(Point.diff(points[i + 1], points[i]), dist); final int numPoints = DoubleMath.roundToInt(dist / POINT_DISTANCE, RoundingMode.FLOOR); for (int j = 0; j < numPoints; j++) { final double factor = j * POINT_DISTANCE; newPoints.add(new Point(points[i].x + factor * unit.x, points[i].y + factor * unit.y)); } } newPoints.add(points[points.length - 1]); Graphs.addPath(graph, newPoints.toArray(new Point[newPoints.size()])); }
static void addPath(Graph<?> graph, Point... points) { final List<Point> newPoints = newArrayList(); for (int i = 0; i < points.length - 1; i++) { final double dist = Point.distance(points[i], points[i + 1]); final Point unit = Point.divide(Point.diff(points[i + 1], points[i]), dist); final int numPoints = DoubleMath.roundToInt(dist / POINT_DISTANCE, RoundingMode.FLOOR); for (int j = 0; j < numPoints; j++) { final double factor = j * POINT_DISTANCE; newPoints.add(new Point(points[i].x + factor * unit.x, points[i].y + factor * unit.y)); } } newPoints.add(points[points.length - 1]); Graphs.addPath(graph, newPoints.toArray(new Point[newPoints.size()])); }
@Test public void testDivideByZero() { final Point p1 = new Point(0, 2); final Point result = Point.divide(p1, 0); assertTrue(Double.isNaN(result.x)); assertTrue(Double.isInfinite(result.y)); }
@Test public void testDivide() { final Point p1 = new Point(1, 2); final Point result = Point.divide(p1, 4); assertEquals(new Point(0.25, 0.5), result); }