private Coord getCenter(final Collection<? extends Node> nodes) { double[] bBox = NetworkUtils.getBoundingBox(nodes); double minX = bBox[0]; double minY = bBox[1]; double maxX = bBox[2]; double maxY = bBox[3]; double centerX = (maxX - minX) / 2 + minX; double centerY = (maxY - minY) / 2 + minY; return new Coord(centerX, centerY); }
private Geometry createBounds() { if (bounds != null) return bounds; double[] box = NetworkUtils.getBoundingBox(network.getNodes().values()); return factory.createPolygon(new Coordinate[]{ new Coordinate(box[0], box[1]), new Coordinate(box[2], box[1]), new Coordinate(box[2], box[3]), new Coordinate(box[0], box[3]), new Coordinate(box[0], box[1])}); } }
private void setLinksMinMax() { log.info("compute network bounding box"); double[] bb = NetworkUtils.getBoundingBox(scenario.getNetwork().getNodes().values()); xCoordMinLinkNode = bb[0]; // yCoordMinLinkNode = bb[1]; // xCoordMaxLinkNode = bb[2]; yCoordMaxLinkNode = bb[3]; }
/** * This determines and set the bounding box based on the network extend * * @param network * @return TODO */ public static BoundingBox createBoundingBox(Network network){ // no real reasons why these are static factory methods instead of constructors; was just easier to refactor. kai, mar'14 return new BoundingBox( NetworkUtils.getBoundingBox( network.getNodes().values() ) ) ; }
@Test public void testGetBoundingBox() { Collection<Node> nodes = new ArrayList<Node>(); Id<Node> id = Id.create("dummy", Node.class); nodes.add(new PseudoNode(id, new Coord((double) 100, (double) 100))); nodes.add(new PseudoNode(id, new Coord((double) 200, (double) 105))); nodes.add(new PseudoNode(id, new Coord((double) 120, (double) 250))); nodes.add(new PseudoNode(id, new Coord((double) 150, (double) 300))); nodes.add(new PseudoNode(id, new Coord((double) 50, (double) 199))); double[] box = NetworkUtils.getBoundingBox(nodes); assertEquals(50, box[0], EPSILON); // minX assertEquals(100, box[1], EPSILON); // miny assertEquals(200, box[2], EPSILON); // maxX assertEquals(300, box[3], EPSILON); // maxY }
@Test public void testGetBoundingBox_negativeNodesOnly() { Collection<Node> nodes = new ArrayList<Node>(); Id<Node> id = Id.create("dummy", Node.class); final double x4 = -100; final double y4 = -100; nodes.add(new PseudoNode(id, new Coord(x4, y4))); final double x3 = -200; final double y3 = -105; nodes.add(new PseudoNode(id, new Coord(x3, y3))); final double x2 = -120; final double y2 = -250; nodes.add(new PseudoNode(id, new Coord(x2, y2))); final double x1 = -150; final double y1 = -300; nodes.add(new PseudoNode(id, new Coord(x1, y1))); final double x = -50; final double y = -199; nodes.add(new PseudoNode(id, new Coord(x, y))); double[] box = NetworkUtils.getBoundingBox(nodes); assertEquals(-200, box[0], EPSILON); // minX assertEquals(-300, box[1], EPSILON); // minY assertEquals(-50, box[2], EPSILON); // maxX assertEquals(-100, box[3], EPSILON); // maxY }