// // C++ Interface: viewing_geometry // // Description: Compute the position of viewed locations // // Author: Nicolas PASCAL, (C) 2012 // // Copyright: See COPYING file that comes with this distribution // // History: // // 2012/02/16 : creation // // #ifndef VIEWING_GEOMETRY_H #define VIEWING_GEOMETRY_H #include "earth_geometry.h" #include "geometry.h" /** * @namespace Viewing view point computations */ namespace Viewing { /** * @brief compute the location of a satellite (in Carthesian Geocentric coordinates), using the the observer position (in ECR Geocentric coordinates), the viewing zenith and azimuth angles and the slant range to the observed point * Earth is supposed to be a perfect shere having an authalic radius of 6371007.2 m, as specified by the WGS84 * @param p_v [IN] observer's position in (lat, lon, alt) coordinates, in degrees/meters * @param theta_v [IN] zenithal angle in degrees. If observer at earth surface, from normal to line of sight * @param phi_v [IN] azimutal angle in degrees. If observer at earth surface, from north to line of sight projection on surface * @param slant_range [IN] earth observer to observed satellite distance, in meters * @param p_s [OUT] observed point in carthesian Geocentric coordinates, in meters */ void earth_to_sat_from_range ( const Geodetic::Point3D & p_v, const double & theta_v, const double & phi_v, const double & slant_range, Carthesian::Point3D & p_s); /** * @brief compute the location of a satellite (in Carthesian Geocentric coordinates), using the the observer position (in ECR Geocentric coordinates), the viewing zenith and azimuth angles and the slant range to the observed point * Earth is supposed to be a perfect shere having an authalic radius of 6371007.2 m, as specified by the WGS84 * @param p_v [IN] observer's position in carthesian coordinates in ECR system, in meters * @param theta_v [IN] zenithal angle in degrees. If observer at earth surface, from normal to line of sight * @param phi_v [IN] azimutal angle in degrees. If observer at earth surface, from north to line of sight projection on surface * @param slant_range [IN] earth observer to observed satellite distance, in meters * @param p_s [OUT] observed point in carthesian Geocentric coordinates, in meters */ void earth_to_sat_from_range ( const Carthesian::Point3D & p_v, const double & theta_v, const double & phi_v, const double & slant_range, Carthesian::Point3D & p_s); /** * @brief compute the location of a satellite (in Carthesian Geocentric coordinates), using the the observer position (in ECR Geocentric coordinates), the viewing zenith and azimuth angles and the slant range to the observed point * Earth is supposed to be a perfect shere having an authalic radius of 6371007.2 m, as specified by the WGS84 * @param p_v [IN] observer's position in (lat, lon, alt) coordinates, in degrees/meters * @param theta_v [IN] zenithal angle in degrees. If observer at earth surface, from normal to line of sight * @param phi_v [IN] azimutal angle in degrees. If observer at earth surface, from north to line of sight projection on surface * @param slant_range [IN] earth observer to observed satellite distance, in meters * @param p_s [OUT] observed point in carthesian Geocentric coordinates, in meters */ void earth_to_sat_from_range ( const Geodetic::Point3D & p_v, const double & theta_v, const double & phi_v, const double & slant_range, Carthesian::Point3D & p_s); /** * @brief computes the earth to satellite slant range, when the altitude of the satellite is given * Earth is supposed to be a perfect shere having an authalic radius of 6371007.2 m, as specified by the WGS84 * @param p_v [IN] observer's position in carthesian coordinates in ECR system, in meters * @param theta_v [IN] zenithal angle in degrees. If observer at earth surface, from normal to line of sight * @param alt_sat [IN] altitude of the satellite above sea mean level, in meters * @return earth observer to observed satellite distance, in meters */ double alt_to_range (const Carthesian::Point3D & p_v, const double & theta_v, const double & alt_sat); /** * @brief computes the earth to satellite slant range, when the altitude of the satellite is given * Earth is supposed to be a perfect shere having an authalic radius of 6371007.2 m, as specified by the WGS84 * @param p_v [IN] observer's position in (lat, lon, alt) coordinates, in degrees/meters * @param theta_v [IN] zenithal angle in degrees. If observer at earth surface, from normal to line of sight * @param alt_sat [IN] altitude of the satellite above sea mean level, in meters * @return earth observer to observed satellite distance, in meters */ double alt_to_range (const Geodetic::Point3D & p_v, const double & theta_v, const double & alt_sat); /** * @brief compute the location of a satellite (in Carthesian Geocentric coordinates), using the the observer position (in ECR Geocentric coordinates), the viewing zenith and azimuth angles and the satellite altitude above mean sea level * Earth is supposed to be a perfect shere having an authalic radius of 6371007.2 m, as specified by the WGS84 * @param p_v [IN] observer's position in carthesian coordinates in ECR system, in meters * @param theta_v [IN] zenithal angle in degrees. If observer at earth surface, from normal to line of sight * @param phi_v [IN] azimutal angle in degrees. If observer at earth surface, from north to line of sight projection on surface * @param alt_sat [IN] altitude of the satellite above sea mean level, in meters * @param p_s [OUT] observed point in carthesian Geocentric coordinates, in meters */ void earth_to_sat_from_alt ( const Carthesian::Point3D & p_v, const double & theta_v, const double & phi_v, const double & alt_sat, Carthesian::Point3D & p_s); /** * @brief compute the location of a satellite (in Carthesian Geocentric coordinates), using the the observer position (in ECR Geocentric coordinates), the viewing zenith and azimuth angles and the satellite altitude above mean sea level * Earth is supposed to be a perfect shere having an authalic radius of 6371007.2 m, as specified by the WGS84 * @param p_v [IN] observer's position in (lat, lon, alt) coordinates, in meters * @param theta_v [IN] zenithal angle in degrees. If observer at earth surface, from normal to line of sight * @param phi_v [IN] azimutal angle in degrees. If observer at earth surface, from north to line of sight projection on surface * @param alt_sat [IN] altitude of the satellite above sea mean level, in meters * @param p_s [OUT] observed point in carthesian Geocentric coordinates, in meters */ void earth_to_sat_from_alt ( const Geodetic::Point3D & p_v, const double & theta_v, const double & phi_v, const double & alt_sat, Carthesian::Point3D & p_s); } #endif