int ON_Box::IsDegenerate( double tolerance ) const { int rc = 0; // 0 box is not degenerate // 1 box is a rectangle (degenerate in one direction) // 2 box is a line (degenerate in two directions) // 3 box is a point (degenerate in three directions) // 4 box is not valid if ( !dx.IsIncreasing() || !dy.IsIncreasing() || !dz.IsIncreasing() ) { rc = 4; } else { const ON_3dVector diag(dx.Length(),dy.Length(),dz.Length()); if ( !ON_IsValid(tolerance) || tolerance < 0.0 ) { // compute scale invarient tolerance tolerance = diag.MaximumCoordinate()*ON_SQRT_EPSILON; } if ( diag.x <= tolerance ) rc++; if ( diag.y <= tolerance ) rc++; if ( diag.z <= tolerance ) rc++; } return rc; }