def bounding_box
max_x, min_x, max_y, min_y = -Float::MAX, Float::MAX, -Float::MAX, Float::MAX, -Float::MAX, Float::MAX
if with_z
max_z, min_z = -Float::MAX, Float::MAX
each do |geometry|
bbox = geometry.bounding_box
sw = bbox[0]
ne = bbox[1]
max_y = ne.y if ne.y > max_y
min_y = sw.y if sw.y < min_y
max_x = ne.x if ne.x > max_x
min_x = sw.x if sw.x < min_x
max_z = ne.z if ne.z > max_z
min_z = sw.z if sw.z < min_z
end
[Point.from_x_y_z(min_x,min_y,min_z),Point.from_x_y_z(max_x,max_y,max_z)]
else
each do |geometry|
bbox = geometry.bounding_box
sw = bbox[0]
ne = bbox[1]
max_y = ne.y if ne.y > max_y
min_y = sw.y if sw.y < min_y
max_x = ne.x if ne.x > max_x
min_x = sw.x if sw.x < min_x
end
[Point.from_x_y(min_x,min_y),Point.from_x_y(max_x,max_y)]
end
end