CPP/Boost/Geometry/CoordinateConversion
From ProgrammingExamples
Spherical.cpp
#include <boost/geometry/geometry.hpp> #include <iostream> static void CartesianToSpherical(); static void SphericalToCartesian(); int main() { CartesianToSpherical(); SphericalToCartesian(); } void CartesianToSpherical() { std::cout << "CartesianToSpherical()" << std::endl; namespace bg = boost::geometry; // bg = 'B'oost 'G'eometry namespace cs = bg::cs; // cs = 'C'oordinate 'S'ystem typedef bg::model::point<long double, 3, cs::cartesian> CartesianType; CartesianType cartesian(0.084186, 0.0225576, 0.996195); typedef bg::model::point<long double, 2, cs::spherical<bg::degree> > SphericalType; SphericalType spherical; bg::strategy::transform::from_cartesian_3_to_spherical_polar_2<CartesianType, SphericalType> strategy; bg::transform(cartesian, spherical, strategy); std::cout << "cartesian: " << bg::dsv(cartesian) << std::endl // dsv = Delimiter Separated Values << "spherical: " << bg::dsv(spherical) << std::endl; } void SphericalToCartesian() { std::cout << "SphericalToCartesian()" << std::endl; namespace bg = boost::geometry; // bg = 'B'oost 'G'eometry namespace cs = bg::cs; // cs = 'C'oordinate 'S'ystem // (theta=5.0, phi=15.0) typedef bg::model::point<long double, 2, cs::spherical<bg::degree> > SphericalType; SphericalType spherical(15.0, 5.0); typedef bg::model::point<long double, 3, cs::cartesian> CartesianType; CartesianType cartesian; bg::strategy::transform::from_spherical_polar_2_to_cartesian_3<SphericalType, CartesianType> strategy; bg::transform(spherical, cartesian, strategy); std::cout << "spherical: " << bg::dsv(spherical) << std::endl // dsv = Delimiter Separated Values << "cartesian: " << bg::dsv(cartesian) << std::endl; }
CMakeLists.txt
cmake_minimum_required(VERSION 2.6) Project(Spherical) set(Boost_USE_MULTITHREADED ON) FIND_PACKAGE(Boost 1.38 COMPONENTS required) INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} ${Boost_INCLUDE_DIRS}) LINK_DIRECTORIES(${LINK_DIRECTORIES} ${Boost_LIBRARY_DIRS}) ADD_EXECUTABLE(Spherical Spherical.cpp)