olp-cpp-sdk  1.22.0
GeoCoordinates3d.h
1 /*
2  * Copyright (C) 2019-2020 HERE Europe B.V.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  * SPDX-License-Identifier: Apache-2.0
17  * License-Filename: LICENSE
18  */
19 
20 #pragma once
21 
22 #include <olp/core/CoreApi.h>
23 #include <olp/core/geo/coordinates/GeoCoordinates.h>
24 
25 namespace olp {
26 namespace geo {
27 
31 class CORE_API GeoCoordinates3d {
32  public:
39 
48  GeoCoordinates3d(double latitude_radians, double longitude_radians,
49  double altitude_meters);
50 
60  GeoCoordinates3d(double latitude_degrees, double longitude_degrees,
61  double altitude_meters, DegreeType degrees);
62 
71  explicit GeoCoordinates3d(const GeoCoordinates& geo_coordinates);
72 
80  GeoCoordinates3d(const GeoCoordinates& geo_coordinates,
81  double altitude_meters);
82 
93  static GeoCoordinates3d FromDegrees(double latitude, double longitude,
94  double altitude = 0.0);
95 
106  static GeoCoordinates3d FromRadians(double latitude, double longitude,
107  double altitude = 0.0);
108 
115 
121  void SetGeoCoordinates(const GeoCoordinates& geo_coordinates);
122 
128  double GetLatitude() const;
129 
135  void SetLatitude(double latitude_radians);
136 
142  double GetLongitude() const;
143 
149  void SetLongitude(double longitude_radians);
150 
156  double GetLatitudeDegrees() const;
157 
163  void setLatitudeDegrees(double latitude_degrees);
164 
170  double GetLongitudeDegrees() const;
171 
177  void SetLongitudeDegrees(double longitude_degrees);
178 
184  double GetAltitude() const;
185 
191  void SetAltitude(double altitude_meters);
192 
199  explicit operator bool() const;
200 
207  bool IsValid() const;
208 
209  protected:
213  double altitude_;
215  static const double kNaN_;
216 };
217 
218 } // namespace geo
219 } // namespace olp
Geodetic coordinates with longitude, latitude, and altitude.
Definition: GeoCoordinates3d.h:31
double GetLongitudeDegrees() const
Gets the longitude in degrees.
void SetLongitude(double longitude_radians)
Sets the longitude in radians.
GeoCoordinates3d(const GeoCoordinates &geo_coordinates, double altitude_meters)
Creates a GeoCoordinates3d instance from 2D coordinates and altitude.
static const double kNaN_
The const that signalizes invalid altitudes.
Definition: GeoCoordinates3d.h:215
GeoCoordinates3d(double latitude_degrees, double longitude_degrees, double altitude_meters, DegreeType degrees)
Creates a GeoCoordinates3d instance from latitude, longitude, and altitude.
double GetAltitude() const
Gets the altitude in meters.
const GeoCoordinates & GetGeoCoordinates() const
Gets the latitude and longitude as 2D geodetic coordinates.
void SetLongitudeDegrees(double longitude_degrees)
Sets the longitude in degrees.
GeoCoordinates geo_coordinates_
The 2D geodetic coordinates.
Definition: GeoCoordinates3d.h:211
void SetLatitude(double latitude_radians)
Sets the latitude in radians.
void setLatitudeDegrees(double latitude_degrees)
Sets the latitude in degrees.
void SetGeoCoordinates(const GeoCoordinates &geo_coordinates)
Sets the latitude and longitude from the 2D geodetic coordinates.
void SetAltitude(double altitude_meters)
Sets the altitude in meters.
GeoCoordinates3d()
Creates a GeoCoordinates3d instance with invalid geodetic coordinates.
double GetLatitude() const
Gets the latitude in radians.
GeoCoordinates3d(const GeoCoordinates &geo_coordinates)
Creates a GeoCoordinates3d instance from 2D coordinates with undefined altitude.
GeoCoordinates3d(double latitude_radians, double longitude_radians, double altitude_meters)
Creates a GeoCoordinates3d instance from latitude, longitude, and altitude.
bool IsValid() const
Checks whether the coordinates and altitude are valid.
double GetLatitudeDegrees() const
Gets the latitude in degrees.
static GeoCoordinates3d FromRadians(double latitude, double longitude, double altitude=0.0)
Creates a GeoCoordinates3d instance from latitude, longitude, and altitude.
double GetLongitude() const
Gets the longitude in radians.
static GeoCoordinates3d FromDegrees(double latitude, double longitude, double altitude=0.0)
Creates a GeoCoordinates3d instance from latitude, longitude, and altitude.
double altitude_
The altitude in meters.
Definition: GeoCoordinates3d.h:213
A geographic location that uses the WGS84 Coordinate System.
Definition: GeoCoordinates.h:38
Rules all the other namespaces.
Definition: AppleSignInProperties.h:24
Definition: Types.h:49