3 #include <lanelet2_core/primitives/Point.h> 24 using Ptr = std::shared_ptr<Projector>;
47 namespace projection {
58 const auto scale = std::cos(origin().
position.
lat * M_PI / 180.0);
59 const double x{scale * p.
lon * M_PI * EarthRadius / 180.0};
60 const double y{scale * EarthRadius * std::log(std::tan((90.0 + p.
lat) * M_PI / 360.0))};
65 const double scale = std::cos(origin().
position.
lat * M_PI / 180.0);
66 const double lon = p.x() * 180.0 / (M_PI * EarthRadius * scale);
67 const double lat = 360.0 * std::atan(std::exp(p.y() / (EarthRadius * scale))) / M_PI - 90.0;
68 return {lat, lon, p.z()};
72 static constexpr
double EarthRadius{6378137.0};
Eigen::Vector3d BasicPoint3d
GPSPoint reverse(const BasicPoint3d &p) const override
Project a point from local coordinates to global lat/lon coordinates.
projection::SphericalMercatorProjector DefaultProjector
bool isDefault
The position of the origin.
std::shared_ptr< Projector > Ptr
BasicPoint3d forward(const GPSPoint &p) const override
Project a point from lat/lon coordinates to a local coordinate system.
static Origin defaultOrigin()
Origin(const GPSPoint &position)
implements a simple spherical mercator projection.
DefaultProjector defaultProjection(Origin origin=Origin::defaultOrigin())
Projector(Origin origin=Origin::defaultOrigin())
const Origin & origin() const
Obtain the internal origin.