PIP 5.6.1
Platform-Independent Primitives
Открытые типы | Открытые члены | Открытые статические члены | Статические открытые данные | Полный список членов класса
Класс PIGeoPosition

Географическая позиция, представленная в одной из нескольких систем координат. Подробнее...

#include <pigeoposition.h>

Граф наследования:PIGeoPosition:
Inheritance graph
[см. легенду]

Открытые типы

enum  CoordinateSystem { }
 Система координат, используемая для хранимых компонент. Подробнее...
 

Открытые члены

 PIGeoPosition ()
 Создает нулевую позицию в декартовой системе координат.
 
 PIGeoPosition (double a, double b, double c, CoordinateSystem s=Cartesian, PIEllipsoidModel ell=PIEllipsoidModel::WGS84Ellipsoid())
 Создает позицию из трех компонент в выбранной системе координат.
 
 PIGeoPosition (PIMathVectorT3d v, CoordinateSystem s=Cartesian, PIEllipsoidModel ell=PIEllipsoidModel::WGS84Ellipsoid())
 Создает позицию из существующего трехмерного вектора.
 
PIGeoPositiontransformTo (CoordinateSystem sys)
 Преобразует хранимое значение в другую систему координат на месте.
 
PIGeoPositionasGeodetic ()
 Преобразует позицию в геодезические координаты.
 
PIGeoPositionasGeodetic (const PIEllipsoidModel &ell)
 Переключает эллипсоид и преобразует позицию в геодезические координаты.
 
PIGeoPositionasECEF ()
 Преобразует позицию в декартовы координаты ECEF.
 
double x () const
 Возвращает компоненту X в декартовых координатах ECEF.
 
double y () const
 Возвращает компоненту Y в декартовых координатах ECEF.
 
double z () const
 Возвращает компоненту Z в декартовых координатах ECEF.
 
double latitudeGeodetic () const
 Возвращает геодезическую широту в градусах.
 
double latitudeGeocentric () const
 Возвращает геоцентрическую широту в градусах.
 
double longitude () const
 Возвращает долготу в градусах.
 
double theta () const
 Возвращает сферический угол тета в градусах (угол от оси Z).
 
double phi () const
 Возвращает сферический угол фи в градусах (угол в плоскости XY от оси X).
 
double radius () const
 Возвращает радиус в метрах для сферического или геоцентрического представления (расстояние от центра Земли).
 
double height () const
 Возвращает геодезическую высоту над эллипсоидом в метрах.
 
void setEllipsoidModel (const PIEllipsoidModel &ell)
 Устанавливает модель эллипсоида, используемую в геодезических преобразованиях.
 
PIGeoPositionsetGeodetic (double lat, double lon, double ht, PIEllipsoidModel ell=PIEllipsoidModel::WGS84Ellipsoid())
 Устанавливает геодезические широту, долготу и высоту в градусах и метрах.
 
PIGeoPositionsetGeocentric (double lat, double lon, double rad)
 Устанавливает геоцентрические широту, долготу и радиус в градусах и метрах.
 
PIGeoPositionsetSpherical (double theta, double phi, double rad)
 Устанавливает сферические тета, фи и радиус в градусах и метрах.
 
PIGeoPositionsetECEF (double x, double y, double z)
 Устанавливает декартовы координаты ECEF в метрах.
 
double radiusEarth () const
 Возвращает радиус эллипсоида для этой позиции.
 
double range (const PIGeoPosition &p) const
 Возвращает прямую дальность до другой позиции в метрах.
 
double elevation (const PIGeoPosition &p) const
 Вычисляет угол места до другой позиции.
 
double elevationGeodetic (const PIGeoPosition &p) const
 Вычисляет угол места относительно локальной геодезической вертикали.
 
double azimuth (const PIGeoPosition &p) const
 Вычисляет азимут на другую позицию.
 
double azimuthGeodetic (const PIGeoPosition &p) const
 Вычисляет азимут по локальным геодезическим осям север-восток.
 
double getCurvMeridian () const
 Возвращает радиус кривизны меридиана для этой позиции.
 
double getCurvPrimeVertical () const
 Возвращает радиус кривизны первого вертикала для этой позиции.
 
const PIMathVectorT3dvector () const
 Возвращает базовый трехкомпонентный вектор в текущей системе.
 
PIGeoPositionoperator= (const PIMathVectorT3d &v)
 Присваивает координаты из обычного 3D-вектора без изменения метаданных.
 
PIGeoPositionoperator-= (const PIGeoPosition &right)
 Вычитает другую позицию после перевода обоих операндов в декартовы координаты.
 
PIGeoPositionoperator+= (const PIGeoPosition &right)
 Складывает другую позицию после перевода обоих операндов в декартовы координаты.
 
bool operator== (const PIGeoPosition &right) const
 Сравнивает две позиции с учетом настроенного допуска и модели эллипсоида.
 
bool operator!= (const PIGeoPosition &right) const
 Возвращает true, если позиции не равны.
 
- Открытые члены унаследованные от PIMathVectorT< Size, Type >
 PIMathVectorT (const Type &v=Type())
 Создает вектор и заполняет все координаты значением v.
 
 PIMathVectorT (const PIVector< Type > &val)
 Создает вектор фиксированного размера из динамического вектора той же длины.
 
 PIMathVectorT (std::initializer_list< Type > init_list)
 Создает вектор из списка инициализации ровно с Size элементами.
 
constexpr uint size () const
 Возвращает размерность вектора, заданную во время компиляции.
 
_CVectorfill (const Type &v)
 Заполняет все координаты значением v.
 
_CVectormove (const Type &v)
 Прибавляет v к каждой координате.
 
_CVectormove (const _CVector &v)
 Прибавляет другой вектор покомпонентно.
 
_CVectorswapElements (uint f, uint s)
 Меняет местами две координаты.
 
Type lengthSqr () const
 Возвращает квадрат евклидовой длины.
 
Type length () const
 Возвращает евклидову длину. Доступно для арифметических типов элементов.
 
Type manhattanLength () const
 Возвращает манхэттенскую длину. Доступно для арифметических типов элементов.
 
Type angleCos (const _CVector &v) const
 Возвращает косинус угла к вектору v.
 
Type angleSin (const _CVector &v) const
 Возвращает синус угла к вектору v.
 
Type angleRad (const _CVector &v) const
 Возвращает угол к вектору v в радианах.
 
Type angleDeg (const _CVector &v) const
 Возвращает угол к вектору v в градусах.
 
Type angleElevation (const _CVector &v) const
 Возвращает угол возвышения от этой точки к v в градусах.
 
_CVector projection (const _CVector &v)
 Возвращает проекцию этого вектора на v.
 
_CVectornormalize ()
 Нормализует этот вектор на месте.
 
_CVector normalized ()
 Возвращает нормализованную копию этого вектора.
 
bool isNull () const
 Возвращает true, если все координаты равны нулю.
 
bool isOrtho (const _CVector &v) const
 Возвращает true, если этот вектор ортогонален v.
 
Type & operator[] (uint index)
 Возвращает доступ на запись к координате.
 
const Type & operator[] (uint index) const
 Возвращает доступ только для чтения к координате.
 
Type at (uint index) const
 Возвращает координату по значению.
 
Type & element (uint index)
 Возвращает доступ на запись к координате.
 
const Type & element (uint index) const
 Возвращает доступ только для чтения к координате.
 
_CVectoroperator= (const Type &v)
 Присваивает всем координатам одно и то же значение.
 
bool operator== (const _CVector &v) const
 Сравнивает два вектора покомпонентно.
 
bool operator!= (const _CVector &v) const
 Возвращает true, если векторы различаются хотя бы по одной координате.
 
void operator+= (const _CVector &v)
 Прибавляет v покомпонентно.
 
void operator-= (const _CVector &v)
 Вычитает v покомпонентно.
 
void operator*= (const Type &v)
 Умножает все координаты на v.
 
void operator/= (const Type &v)
 Делит все координаты на v.
 
_CVector operator- () const
 Возвращает вектор с противоположным знаком.
 
_CVector operator+ (const _CVector &v) const
 Возвращает покомпонентную сумму с v.
 
_CVector operator- (const _CVector &v) const
 Возвращает покомпонентную разность с v.
 
_CVector operator* (const Type &v) const
 Возвращает копию, масштабированную на v.
 
_CVector operator/ (const Type &v) const
 Возвращает копию, поделенную на v.
 
_CVector cross (const _CVector &v) const
 Возвращает 3D-векторное произведение с v.
 
Type dot (const _CVector &v) const
 Возвращает скалярное произведение с v.
 
_CVector mul (const _CVector &v) const
 Возвращает покомпонентное произведение с v.
 
_CVector mul (const Type &v) const
 Возвращает копию, масштабированную на v.
 
_CVector div (const _CVector &v) const
 Возвращает покомпонентное деление на v.
 
_CVector div (const Type &v) const
 Возвращает копию, поделенную на v.
 
PIMathMatrixT< 1, Size, Type > transposed () const
 Возвращает вектор как матрицу 1 x Size.
 
Type distToLine (const _CVector &lp0, const _CVector &lp1)
 Возвращает расстояние от этой 2D-точки до прямой через lp0 и lp1.
 
template<uint Size1, typename Type1 >
PIMathVectorT< Size1, Type1 > turnTo () const
 Преобразует этот вектор к другой размерности и типу элементов.
 
template<typename T >
PIMathVectorT< Size, T > toType () const
 Возвращает этот вектор с другим типом элементов.
 
template<uint SubSize>
PIMathVectorT< SubSize, Type > subvector (int offset=0) const
 Возвращает подвектор, начиная с offset, и заполняет нулями координаты вне исходного диапазона.
 
template<uint SubSize>
PIMathVectorT< Size, Type > & setSubvector (int index, const PIMathVectorT< SubSize, Type > &v)
 Записывает v в этот вектор, начиная с index, и игнорирует координаты вне диапазона назначения.
 

Открытые статические члены

static double setPositionTolerance (const double tol)
 Устанавливает допуск по умолчанию в метрах.
 
static double getPositionTolerance ()
 Возвращает допуск по умолчанию в метрах.
 
static void convertSphericalToCartesian (const PIMathVectorT3d &tpr, PIMathVectorT3d &xyz)
 Преобразует сферические координаты в декартовы координаты ECEF.
 
static void convertCartesianToSpherical (const PIMathVectorT3d &xyz, PIMathVectorT3d &tpr)
 Преобразует декартовы координаты ECEF в сферические координаты.
 
static void convertCartesianToGeodetic (const PIMathVectorT3d &xyz, PIMathVectorT3d &llh, PIEllipsoidModel ell=PIEllipsoidModel::WGS84Ellipsoid())
 Преобразует декартовы координаты ECEF в геодезические координаты.
 
static void convertGeodeticToCartesian (const PIMathVectorT3d &llh, PIMathVectorT3d &xyz, PIEllipsoidModel ell=PIEllipsoidModel::WGS84Ellipsoid())
 Преобразует геодезические координаты в декартовы координаты ECEF.
 
static void convertCartesianToGeocentric (const PIMathVectorT3d &xyz, PIMathVectorT3d &llr)
 Преобразует декартовы координаты ECEF в геоцентрические координаты.
 
static void convertGeocentricToCartesian (const PIMathVectorT3d &llr, PIMathVectorT3d &xyz)
 Преобразует геоцентрические координаты в декартовы координаты ECEF.
 
static void convertGeocentricToGeodetic (const PIMathVectorT3d &llr, PIMathVectorT3d &llh, PIEllipsoidModel ell=PIEllipsoidModel::WGS84Ellipsoid())
 Преобразует геоцентрические координаты в геодезические координаты.
 
static void convertGeodeticToGeocentric (const PIMathVectorT3d &llh, PIMathVectorT3d &llr, PIEllipsoidModel ell=PIEllipsoidModel::WGS84Ellipsoid())
 Преобразует геодезические координаты в геоцентрические координаты.
 
static double radiusEarth (double geolat, PIEllipsoidModel ell=PIEllipsoidModel::WGS84Ellipsoid())
 Возвращает радиус эллипсоида на заданной геодезической широте.
 
static double range (const PIGeoPosition &a, const PIGeoPosition &b)
 Возвращает прямую дальность между двумя позициями в метрах.
 
- Открытые статические члены унаследованные от PIMathVectorT< Size, Type >
static _CVector fromTwoPoints (const _CVector &st, const _CVector &fn)
 Строит вектор смещения от точки st к точке fn.
 
static _CVector cross (const _CVector &v1, const _CVector &v2)
 Возвращает векторное произведение v1 и v2.
 
static Type dot (const _CVector &v1, const _CVector &v2)
 Возвращает скалярное произведение v1 и v2.
 
static _CVector mul (const _CVector &v1, const _CVector &v2)
 Возвращает покомпонентное произведение v1 и v2.
 
static _CVector mul (const Type &v1, const _CVector &v2)
 Возвращает v2, масштабированный на v1.
 
static _CVector mul (const _CVector &v1, const Type &v2)
 Возвращает v1, масштабированный на v2.
 
static _CVector div (const _CVector &v1, const _CVector &v2)
 Возвращает покомпонентное деление v1 на v2.
 
static _CVector div (const _CVector &v1, const Type &v2)
 Возвращает v1, поделенный на скаляр v2.
 

Статические открытые данные

static const double one_cm_tolerance = 0.01
 Допуск в один сантиметр в метрах.
 
static const double one_mm_tolerance = 0.001
 Допуск в один миллиметр в метрах.
 
static const double one_um_tolerance = 0.000001
 Допуск в один микрон в метрах.
 
static double position_tolerance = PIGeoPosition::one_mm_tolerance
 Допуск по умолчанию для сравнений и вырожденных случаев, в метрах.
 

Подробное описание

Географическая позиция, представленная в одной из нескольких систем координат.

Этот класс предоставляет функциональность для хранения и преобразования между различными системами координат, включая геодезическую, геоцентрическую, декартову и сферическую. Он поддерживает различные модели эллипсоида для представления Земли.

Перечисления

◆ CoordinateSystem

Система координат, используемая для хранимых компонент.

Элементы перечислений
Geodetic 

Геодезическая широта, долгота и высота над эллипсоидом

Geocentric 

Геоцентрическая широта, долгота и радиус

Cartesian 

Декартовы координаты ECEF

Spherical 

Сферические координаты: тета, фи и радиус