/** * 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; } }