/**
  * Constructor.
  *
  * @param float[][]|Point[] $positions
  * @param CoordinateResolutionSystem|BoundingBox $arg,...
  */
 public function __construct(array $positions)
 {
     $this->coordinates = array_map(function ($point) {
         if (!$point instanceof Point) {
             $point = new Point($point);
         }
         return $point->getCoordinates();
     }, $positions);
     if (func_num_args() > 1) {
         $this->setOptionalConstructorArgs(array_slice(func_get_args(), 1));
     }
 }
 public function addPoint(Point $point)
 {
     $this->coordinates[] = $point->getCoordinates();
     return $this;
 }
 /**
  * precisionMagnavox
  *
  * assumes that the Earth is an ellipsoid Earth (best precision here)
  *
  * @todo To test
  * @todo Achieve the method (follow the link)
  *
  * @tutorial Sets 
  * @link http://inventeksys.com/GPS_Facts_Great_Circle_Distances.pdf
  *
  * @param Point $a
  * @param Point $b
  */
 public function precisionMagnavox(Point $a, Point $b)
 {
     $this->deltaLatitude = $b->getCoordinates()[0] - $a->getCoordinates()[0];
     $this->deltaLongititude = $b->getCoordinates()[1] - $a->getCoordinates()[1];
     $this->bearing = 0;
     //@todo To test.
     $this->gcd = 0;
     //@todo To test.
 }