Splits the box object into many boxes each of given size.
        Assumption: the entire box can be split into rows and columns with the given size.

        :param box_size: (width, height) of the new tiny boxes
        :return: Array of tiny boxes

def split(self, box_size):
        """
        Splits the box object into many boxes each of given size.
        Assumption: the entire box can be split into rows and columns with the given size.

        :param box_size: (width, height) of the new tiny boxes
        :return: Array of tiny boxes
        """
        w, h = box_size
        rows = round(self.height / h)
        cols = round(self.width / w)

        boxes = []
        for row in range(rows):
            for col in range(cols):
                box = Box(self.x + (col * w), self.y + (row * h), w, h)
                boxes.append(box)
        return boxes