fn grow_node_box_pair()

in Rust/src/nodestore.rs [546:599]


    fn grow_node_box_pair(
        &self,
        first: &mut BoundingBox,
        second: &mut BoundingBox,
        point_store: &dyn PointStore,
        _node: usize,
        sibling: usize,
    ) {
        if self.is_leaf(sibling) {
            if self.using_transforms {
                let point =
                    &(self.project_to_tree)(point_store.get_copy(self.get_point_index(sibling)));
                (*first).check_contains_and_add_point(point);
                (*second).check_contains_and_add_point(point);
            } else {
                let point = point_store
                    .get_reference_and_offset(self.get_point_index(sibling))
                    .0;
                (*first).check_contains_and_add_point(point);
                (*second).check_contains_and_add_point(point);
            }
        } else {
            let idx: usize = self.translate(sibling.into());
            if idx != usize::MAX {
                let dimensions = self.dimensions;
                let base = 2 * idx * dimensions;
                (*first)
                    .check_contains_and_add_point(&self.bounding_box_data[base..base + dimensions]);
                (*second)
                    .check_contains_and_add_point(&self.bounding_box_data[base..base + dimensions]);
                (*first).check_contains_and_add_point(
                    &self.bounding_box_data[base + dimensions..base + 2 * dimensions],
                );
                (*second).check_contains_and_add_point(
                    &self.bounding_box_data[base + dimensions..base + 2 * dimensions],
                );
            } else {
                self.grow_node_box_pair(
                    first,
                    second,
                    point_store,
                    sibling,
                    self.get_left_index(sibling),
                );
                self.grow_node_box_pair(
                    first,
                    second,
                    point_store,
                    sibling,
                    self.get_right_index(sibling),
                );
            }
        }
    }