public function bounding_box() { $max_x = -INF; $max_y = -INF; $min_x = INF; $min_y = INF; if (!$this->with_z) { foreach ($this->geometries as $geom) { $bbox = $geom->bounding_box(); $ll = $bbox[0]; $ur = $bbox[1]; if ($ll->x < $min_x) { $min_x = $ll->x; } if ($ll->y < $min_y) { $min_y = $ll->y; } if ($ur->x > $max_x) { $max_x = $ur->x; } if ($ur->y > $max_y) { $max_y = $ur->y; } } return array(Point::from_xy($min_x, $min_y), Point::from_xy($max_x, $max_y)); } else { $max_z = INF; $min_z = -INF; foreach ($this->geometries as $geom) { $bbox = $geom->bounding_box(); $ll = $bbox[0]; $ur = $bbox[1]; if ($ll->x < $min_x) { $min_x = $ll->x; } if ($ll->y < $min_y) { $min_y = $ll->y; } if ($ll->z < $min_z) { $min_z = $ll->z; } if ($ur->x > $max_x) { $max_x = $ur->x; } if ($ur->y > $max_y) { $max_y = $ur->y; } if ($ur->z > $max_z) { $max_y = $ur->z; } } return array(Point::from_xy($min_x, $min_y), Point::from_xy($max_x, $max_y)); } }
public function bounding_box() { $max_x = -INF; $max_y = -INF; $min_x = INF; $min_y = INF; if (!$this->with_z) { foreach ($this->points as $p) { if ($p->x < $min_x) { $min_x = $p->x; } if ($p->y < $min_y) { $min_y = $p->y; } if ($p->x > $max_x) { $max_x = $p->x; } if ($p->y > $max_y) { $max_y = $p->y; } } return array(Point::from_xy($min_x, $min_y), Point::from_xy($max_x, $max_y)); } else { $max_z = -INF; $min_z = INF; foreach ($this->points as $p) { if ($p->x < $min_x) { $min_x = $p->x; } if ($p->y < $min_y) { $min_y = $p->y; } if ($p->z < $min_z) { $min_z = $p->z; } if ($p->x > $max_x) { $max_x = $p->x; } if ($p->y > $max_y) { $max_y = $p->y; } if ($p->z > $max_z) { $max_z = $p->z; } } return array(Point::from_xyz($min_x, $min_y, $min_z), Point::from_xyz($max_x, $max_y, $max_z)); } }