protected double calcAngularWidth(NodeItem n,int d){
  if (d > m_maxDepth)   m_maxDepth=d;
  double aw=0;
  Rectangle2D bounds=n.getBounds();
  double w=bounds.getWidth(), h=bounds.getHeight();
  double diameter=d == 0 ? 0 : Math.sqrt(w * w + h * h) / d;
  if (n.isExpanded() && n.getChildCount() > 0) {
    Iterator childIter=n.children();
    while (childIter.hasNext()) {
      NodeItem c=(NodeItem)childIter.next();
      aw+=calcAngularWidth(c,d + 1);
    }
    aw=Math.max(diameter,aw);
  }
 else {
    aw=diameter;
  }
  ((Params)n.get(PARAMS)).width=aw;
  return aw;
}

protected double calcAngularWidth ( NodeItem n , int d ) { if ( d > m_maxDepth ) m_maxDepth = d ; double aw = 0 ; Rectangle2D bounds = n . getBounds ( ) ; double w = bounds . getWidth ( ) , h = bounds . getHeight ( ) ; double diameter = d == 0 ? 0 : Math . sqrt ( w * w + h * h ) / d ; if ( n . isExpanded ( ) && n . getChildCount ( ) > 0 ) { Iterator childIter = n . children ( ) ; while ( childIter . hasNext ( ) ) { NodeItem c = ( NodeItem ) childIter . next ( ) ; aw += calcAngularWidth ( c , d + 1 ) ; } aw = Math . max ( diameter , aw ) ; } else { aw = diameter ; } ( ( Params ) n . get ( PARAMS ) ) . width = aw ; return aw ; }
computes relative measures of the angular widths of each expanded subtree . node diameters are taken into account to improve space allocation for variable - sized nodes . this method also updates the base angle value for nodes to ensure proper ordering of nodes .
