Esempio n. 1
0
 /**
  *  coordinate system definition,
  *  point to transform in geocentric coordinates (x,y,z)
  * Note: this will change the point by reference.
  */
 public function geocentric_from_wgs84(Point $p)
 {
     Proj4php::reportDebug('geocentric_from_wgs84(' . $p->x . ',' . $p->y . ")\n");
     if ($this->datum_type == Common::PJD_3PARAM) {
         Proj4php::reportDebug("+x=" . $this->datum_params[0] . "\n");
         Proj4php::reportDebug("+y=" . $this->datum_params[1] . "\n");
         Proj4php::reportDebug("+z=" . $this->datum_params[2] . "\n");
         $p->x -= $this->datum_params[0];
         $p->y -= $this->datum_params[1];
         $p->z -= $this->datum_params[2];
     } elseif ($this->datum_type == Common::PJD_7PARAM) {
         Proj4php::reportDebug("Dx=" . $this->datum_params[0] . "\n");
         Proj4php::reportDebug("Dy=" . $this->datum_params[1] . "\n");
         Proj4php::reportDebug("Dz=" . $this->datum_params[2] . "\n");
         Proj4php::reportDebug("Rx=" . $this->datum_params[3] . "\n");
         Proj4php::reportDebug("Ry=" . $this->datum_params[4] . "\n");
         Proj4php::reportDebug("Rz=" . $this->datum_params[5] . "\n");
         Proj4php::reportDebug("M=" . $this->datum_params[6] . "\n");
         $Dx_BF = $this->datum_params[0];
         $Dy_BF = $this->datum_params[1];
         $Dz_BF = $this->datum_params[2];
         $Rx_BF = $this->datum_params[3];
         $Ry_BF = $this->datum_params[4];
         $Rz_BF = $this->datum_params[5];
         $M_BF = $this->datum_params[6];
         $x_tmp = ($p->x - $Dx_BF) / $M_BF;
         $y_tmp = ($p->y - $Dy_BF) / $M_BF;
         $z_tmp = ($p->z - $Dz_BF) / $M_BF;
         $p->x = $x_tmp + $Rz_BF * $y_tmp - $Ry_BF * $z_tmp;
         $p->y = -$Rz_BF * $x_tmp + $y_tmp + $Rx_BF * $z_tmp;
         $p->z = $Ry_BF * $x_tmp - $Rx_BF * $y_tmp + $z_tmp;
     }
 }