Я играю с новой библиотекой геометрии, доступной в бусте 1.47, и хотел знать, возможно ли определить 2D полярную систему.
В заголовочных файлах и документации я нашел определение для полярной системы, но при попытке использовать его с примером кода ниже я получаю ошибки компиляции:
using namespace boost;
typedef geometry::cs::polar<geometry::radian> geometry_type;
typedef geometry::model::point<double, 2, geometry_type> point_type;
const double PI = math::constants::pi<double>();
point_type p1(0, 0);
point_type p2(1, PI/2);
double dist = geometry::distance(p1, p2); // COMPILATION FAILS HERE
в VC2010 я получаю: «ошибка C2039:« тип »: не является членом« boost :: geometry :: traits :: cs_tag »» при попытке скомпилировать функцию расстояния выше.
Это определение полярной системы, извлеченное из файлов заголовков надстройки (boost / geometry / core / cs.hpp):
/*!
\brief Polar coordinate system
\details Defines the polar coordinate system "in which each point
on a plane is determined by an angle and a distance"
\see http://en.wikipedia.org/wiki/Polar_coordinates
\ingroup cs
*/
template<typename DegreeOrRadian>
struct polar
{
typedef DegreeOrRadian units;
};
Но я думаю, что это определение неполное, поскольку «полярный» нигде больше не упоминается. Должен ли я сам определять стратегию расстояния и другие необходимые черты для простой 2D-полярной системы?