private void render(final Graphics2D g) { final KDLeafVisitor<Vec2d> visitor = new KDLeafVisitor<Vec2d>() { @Override public void visit(LeafNode<Vec2d> node) { drawPoint(new Vec2d(node.x, node.y), g); } }; g.setColor(Color.black); tree.visitPreOrder(visitor); if (markX != 0) { g.setColor(Color.RED); drawCircle(markX, markY, markRadius, g); long time1 = -System.currentTimeMillis(); final List<Vec2d> neighbours = tree.findClosestNeighbours(markX, markY, markRadius, 50); time1 += System.currentTimeMillis(); System.out.println("Time: " + time1); double maxDistance = 0; Vec2d farest = Vec2d.ORIGIN; for (Vec2d neighbour : neighbours) { drawPoint(neighbour, g); double distance = neighbour.minus(markX, markY).length(); if (farest == Vec2d.ORIGIN || distance > maxDistance) { farest = neighbour; maxDistance = distance; } } if (farest != Vec2d.ORIGIN) { g.setColor(Color.GREEN); drawCircle(markX, markY, maxDistance, g); } } }