Exemple #1
0
 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));
     }
 }
Exemple #2
0
 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));
     }
 }