PIP 6.1.0
Platform-Independent Primitives
Загрузка...
Поиск...
Не найдено
Класс PIGeoPosition

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

#include <pigeoposition.h>

Граф наследования:PIGeoPosition:

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

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())
 Создает позицию из существующего трехмерного вектора.
PIGeoPosition & transformTo (CoordinateSystem sys)
 Преобразует хранимое значение в другую систему координат на месте.
PIGeoPosition & asGeodetic ()
 Преобразует позицию в геодезические координаты.
PIGeoPosition & asGeodetic (const PIEllipsoidModel &ell)
 Переключает эллипсоид и преобразует позицию в геодезические координаты.
PIGeoPosition & asECEF ()
 Преобразует позицию в декартовы координаты 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)
 Устанавливает модель эллипсоида, используемую в геодезических преобразованиях.
PIGeoPosition & setGeodetic (double lat, double lon, double ht, PIEllipsoidModel ell=PIEllipsoidModel::WGS84Ellipsoid())
 Устанавливает геодезические широту, долготу и высоту в градусах и метрах.
PIGeoPosition & setGeocentric (double lat, double lon, double rad)
 Устанавливает геоцентрические широту, долготу и радиус в градусах и метрах.
PIGeoPosition & setSpherical (double theta, double phi, double rad)
 Устанавливает сферические тета, фи и радиус в градусах и метрах.
PIGeoPosition & setECEF (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 PIMathVectorT3d & vector () const
 Возвращает базовый трехкомпонентный вектор в текущей системе.
PIGeoPosition & operator= (const PIMathVectorT3d &v)
 Присваивает координаты из обычного 3D-вектора без изменения метаданных.
PIGeoPosition & operator-= (const PIGeoPosition &right)
 Вычитает другую позицию после перевода обоих операндов в декартовы координаты.
PIGeoPosition & operator+= (const PIGeoPosition &right)
 Складывает другую позицию после перевода обоих операндов в декартовы координаты.
bool operator== (const PIGeoPosition &right) const
 Сравнивает две позиции с учетом настроенного допуска и модели эллипсоида.
bool operator!= (const PIGeoPosition &right) const
 Возвращает true, если позиции не равны.
Открытые члены унаследованные от PIMathVectorT< 3u, double >
 PIMathVectorT (const double &v=double())
 Создает вектор и заполняет все координаты значением v.
 PIMathVectorT (const PIVector< double > &val)
 Создает вектор фиксированного размера из динамического вектора той же длины.
 PIMathVectorT (std::initializer_list< double > init_list)
 Создает вектор из списка инициализации ровно с Size элементами.
constexpr uint size () const
 Возвращает размерность вектора, заданную во время компиляции.
_CVector & fill (const double &v)
 Заполняет все координаты значением v.
_CVector & move (const double &v)
 Прибавляет v к каждой координате.
_CVector & move (const _CVector &v)
 Прибавляет другой вектор покомпонентно.
_CVector & swapElements (uint f, uint s)
 Меняет местами две координаты.
double lengthSqr () const
 Возвращает квадрат евклидовой длины.
double length () const
 Возвращает евклидову длину. Доступно для арифметических типов элементов.
double manhattanLength () const
 Возвращает манхэттенскую длину. Доступно для арифметических типов элементов.
double angleCos (const _CVector &v) const
 Возвращает косинус угла к вектору v.
double angleSin (const _CVector &v) const
 Возвращает синус угла к вектору v.
double angleRad (const _CVector &v) const
 Возвращает угол к вектору v в радианах.
double angleDeg (const _CVector &v) const
 Возвращает угол к вектору v в градусах.
double angleElevation (const _CVector &v) const
 Возвращает угол возвышения от этой точки к v в градусах.
_CVector projection (const _CVector &v)
 Возвращает проекцию этого вектора на v.
_CVector & normalize ()
 Нормализует этот вектор на месте.
_CVector normalized ()
 Возвращает нормализованную копию этого вектора.
bool isNull () const
 Возвращает true, если все координаты равны нулю.
bool isOrtho (const _CVector &v) const
 Возвращает true, если этот вектор ортогонален v.
double & operator[] (uint index)
 Возвращает доступ на запись к координате.
const double & operator[] (uint index) const
 Возвращает доступ только для чтения к координате.
double at (uint index) const
 Возвращает координату по значению.
double & element (uint index)
 Возвращает доступ на запись к координате.
const double & element (uint index) const
 Возвращает доступ только для чтения к координате.
_CVector & operator= (const double &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 double &v)
 Умножает все координаты на v.
void operator/= (const double &v)
 Делит все координаты на v.
_CVector operator- () const
 Возвращает вектор с противоположным знаком.
_CVector operator+ (const _CVector &v) const
 Возвращает покомпонентную сумму с v.
_CVector operator- (const _CVector &v) const
 Возвращает покомпонентную разность с v.
_CVector operator* (const double &v) const
 Возвращает копию, масштабированную на v.
_CVector operator/ (const double &v) const
 Возвращает копию, поделенную на v.
_CVector cross (const _CVector &v) const
 Возвращает 3D-векторное произведение с v.
double dot (const _CVector &v) const
 Возвращает скалярное произведение с v.
_CVector mul (const _CVector &v) const
 Возвращает покомпонентное произведение с v.
_CVector mul (const double &v) const
 Возвращает копию, масштабированную на v.
_CVector div (const _CVector &v) const
 Возвращает покомпонентное деление на v.
_CVector div (const double &v) const
 Возвращает копию, поделенную на v.
PIMathMatrixT< 1, Size, double > transposed () const
 Возвращает вектор как матрицу 1 x Size.
double distToLine (const _CVector &lp0, const _CVector &lp1)
 Возвращает расстояние от этой 2D-точки до прямой через lp0 и lp1.
PIMathVectorT< Size1, Type1 > turnTo () const
 Преобразует этот вектор к другой размерности и типу элементов.
PIMathVectorT< Size, T > toType () const
 Возвращает этот вектор с другим типом элементов.
PIMathVectorT< SubSize, double > subvector (int offset=0) const
 Возвращает подвектор, начиная с offset, и заполняет нулями координаты вне исходного диапазона.
PIMathVectorT< Size, double > & setSubvector (int index, const PIMathVectorT< SubSize, double > &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< 3u, double >
static _CVector fromTwoPoints (const _CVector &st, const _CVector &fn)
 Строит вектор смещения от точки st к точке fn.
static _CVector cross (const _CVector &v1, const _CVector &v2)
 Возвращает векторное произведение v1 и v2.
static double dot (const _CVector &v1, const _CVector &v2)
 Возвращает скалярное произведение v1 и v2.
static _CVector mul (const _CVector &v1, const _CVector &v2)
 Возвращает покомпонентное произведение v1 и v2.
static _CVector mul (const double &v1, const _CVector &v2)
 Возвращает v2, масштабированный на v1.
static _CVector mul (const _CVector &v1, const double &v2)
 Возвращает v1, масштабированный на v2.
static _CVector div (const _CVector &v1, const _CVector &v2)
 Возвращает покомпонентное деление v1 на v2.
static _CVector div (const _CVector &v1, const double &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 

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