box class constructor allows misuse
Instead of providing the min/max coordinates, it would be better to require the minimum coordinates and the dx, dy, dz values. In this case, the checks for degenerated boxes would become obsolete in the constructor, and would not allow misuse of the class.