fn bounds(&self) -> Bounds {
        let local_bounds = self.local_bounds();

        // This ugly processing (disassemble/transform/reassemble) is required because after the transformation,
        // the bounding box can change completely.
        // Some negligible processing is spared by flattening the transformations (see comment on the
        // Group type).

        let local_corners = [
            Tuple::point(local_bounds.min.x, local_bounds.min.y, local_bounds.min.z),
            Tuple::point(local_bounds.min.x, local_bounds.min.y, local_bounds.max.z),
            Tuple::point(local_bounds.min.x, local_bounds.max.y, local_bounds.min.z),
            Tuple::point(local_bounds.min.x, local_bounds.max.y, local_bounds.max.z),
            Tuple::point(local_bounds.max.x, local_bounds.min.y, local_bounds.min.z),
            Tuple::point(local_bounds.max.x, local_bounds.min.y, local_bounds.max.z),
            Tuple::point(local_bounds.max.x, local_bounds.max.y, local_bounds.min.z),
            Tuple::point(local_bounds.max.x, local_bounds.max.y, local_bounds.max.z),
        ];

        let transform = self.transform();
        let mut bounds = Bounds::default();

        for corner in local_corners.iter() {
            let transformed_corner = transform * corner;

            Bounds::update_from_tuple(&mut bounds, &transformed_corner);
        }

        bounds
    }
// Local (object-level) bounds, with the shape transformation applied.
//
Local (object-level) bounds, with the shape transformation applied.
Local ( object - level ) bounds with the shape transformation applied .
fn bounds(&self) -> Bounds {
        let local_bounds = self.local_bounds();
        // This ugly processing (disassemble/transform/reassemble) is required because after the transformation,
        // the bounding box can change completely.
        // Some negligible processing is spared by flattening the transformations (see comment on the
        // Group type).
        let local_corners = [
            Tuple::point(local_bounds.min.x, local_bounds.min.y, local_bounds.min.z),
            Tuple::point(local_bounds.min.x, local_bounds.min.y, local_bounds.max.z),
            Tuple::point(local_bounds.min.x, local_bounds.max.y, local_bounds.min.z),
            Tuple::point(local_bounds.min.x, local_bounds.max.y, local_bounds.max.z),
            Tuple::point(local_bounds.max.x, local_bounds.min.y, local_bounds.min.z),
            Tuple::point(local_bounds.max.x, local_bounds.min.y, local_bounds.max.z),
            Tuple::point(local_bounds.max.x, local_bounds.max.y, local_bounds.min.z),
            Tuple::point(local_bounds.max.x, local_bounds.max.y, local_bounds.max.z),
        ];
        let transform = self.transform();
        let mut bounds = Bounds::default();
        for corner in local_corners.iter() {
            let transformed_corner = transform * corner;
            Bounds::update_from_tuple(&mut bounds, &transformed_corner);
        }
        bounds
    }
fn bounds ( & self ) -> Bounds { let local_bounds = self . local_bounds ( ) ; // This ugly processing (disassemble/transform/reassemble) is required because after the transformation, // the bounding box can change completely. // Some negligible processing is spared by flattening the transformations (see comment on the // Group type). let local_corners = [ Tuple :: point ( local_bounds . min . x , local_bounds . min . y , local_bounds . min . z ) , Tuple :: point ( local_bounds . min . x , local_bounds . min . y , local_bounds . max . z ) , Tuple :: point ( local_bounds . min . x , local_bounds . max . y , local_bounds . min . z ) , Tuple :: point ( local_bounds . min . x , local_bounds . max . y , local_bounds . max . z ) , Tuple :: point ( local_bounds . max . x , local_bounds . min . y , local_bounds . min . z ) , Tuple :: point ( local_bounds . max . x , local_bounds . min . y , local_bounds . max . z ) , Tuple :: point ( local_bounds . max . x , local_bounds . max . y , local_bounds . min . z ) , Tuple :: point ( local_bounds . max . x , local_bounds . max . y , local_bounds . max . z ) , ] ; let transform = self . transform ( ) ; let mut bounds = Bounds :: default ( ) ; for corner in local_corners . iter ( ) { let transformed_corner = transform * corner ; Bounds :: update_from_tuple ( & mut bounds , & transformed_corner ) ; } bounds }
Local (object-level) bounds, with the shape transformation applied.
Local ( object - level ) bounds with the shape transformation applied .
&self