示例#1
0
    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);
        }
      }
    }