MCPcopy Create free account
hub / github.com/CesiumGS/cesium-native / cartesianToCartographic

Method cartesianToCartographic

CesiumGeospatial/src/Ellipsoid.cpp:47–63  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

45}
46
47std::optional<Cartographic>
48Ellipsoid::cartesianToCartographic(const glm::dvec3& cartesian) const noexcept {
49 std::optional<glm::dvec3> p = this->scaleToGeodeticSurface(cartesian);
50
51 if (!p) {
52 return std::optional<Cartographic>();
53 }
54
55 const glm::dvec3 n = this->geodeticSurfaceNormal(p.value());
56 const glm::dvec3 h = cartesian - p.value();
57
58 const double longitude = glm::atan(n.y, n.x);
59 const double latitude = glm::asin(n.z);
60 const double height = Math::sign(glm::dot(h, cartesian)) * glm::length(h);
61
62 return Cartographic(longitude, latitude, height);
63}
64
65std::optional<glm::dvec3>
66Ellipsoid::scaleToGeodeticSurface(const glm::dvec3& cartesian) const noexcept {

Callers 8

vectorizeModelFunction · 0.80
computeBoundingPlanesFunction · 0.80
ViewStateMethod · 0.80
operator()Method · 0.80
computeBoundingRegionMethod · 0.80

Calls 4

geodeticSurfaceNormalMethod · 0.95
signFunction · 0.85
CartographicClass · 0.50

Tested by

no test coverage detected