private void visualizeMTreeEntry(SVGPlot svgp,Element layer,Projection2D proj,AbstractMTree<?,N,E,?> mtree,E entry,int depth){
  DBID roid=entry.getRoutingObjectID();
  if (roid != null) {
    NumberVector ro=rel.get(roid);
    double rad=entry.getCoveringRadius();
    final Element r;
    if (dist == Modus.MANHATTAN) {
      r=SVGHyperSphere.drawManhattan(svgp,proj,ro,rad);
    }
 else     if (dist == Modus.EUCLIDEAN) {
      r=SVGHyperSphere.drawEuclidean(svgp,proj,ro,rad);
    }
 else {
      r=SVGHyperSphere.drawLp(svgp,proj,ro,rad,p);
    }
    SVGUtil.setCSSClass(r,INDEX + (depth - 1));
    layer.appendChild(r);
  }
  if (!entry.isLeafEntry()) {
    N node=mtree.getNode(entry);
    for (int i=0; i < node.getNumEntries(); i++) {
      E child=node.getEntry(i);
      if (!child.isLeafEntry()) {
        visualizeMTreeEntry(svgp,layer,proj,mtree,child,depth + 1);
      }
    }
  }
}

private void visualizeMTreeEntry ( SVGPlot svgp , Element layer , Projection2D proj , AbstractMTree < ? , N , E , ? > mtree , E entry , int depth ) { DBID roid = entry . getRoutingObjectID ( ) ; if ( roid != null ) { NumberVector ro = rel . get ( roid ) ; double rad = entry . getCoveringRadius ( ) ; final Element r ; if ( dist == Modus . MANHATTAN ) { r = SVGHyperSphere . drawManhattan ( svgp , proj , ro , rad ) ; } else if ( dist == Modus . EUCLIDEAN ) { r = SVGHyperSphere . drawEuclidean ( svgp , proj , ro , rad ) ; } else { r = SVGHyperSphere . drawLp ( svgp , proj , ro , rad , p ) ; } SVGUtil . setCSSClass ( r , INDEX + ( depth - 1 ) ) ; layer . appendChild ( r ) ; } if ( ! entry . isLeafEntry ( ) ) { N node = mtree . getNode ( entry ) ; for ( int i = 0 ; i < node . getNumEntries ( ) ; i ++ ) { E child = node . getEntry ( i ) ; if ( ! child . isLeafEntry ( ) ) { visualizeMTreeEntry ( svgp , layer , proj , mtree , child , depth + 1 ) ; } } } }
recursively draw the mbr rectangles .
