Пример программы для использования тегов в Boost.Geometry

Пример программы для использования тегов в Boost.Geometry

Boost.Geometry — это библиотека C++ для реализации геометрических алгоритмов, которая предоставляет множество полезных классов и функций для обработки различных геометрических объектов. При использовании библиотеки Boost.Geometry мы часто будем видеть слово «тег», которое представляет собой метод указания типа геометрического объекта.

В Boost.Geometry с каждым геометрическим объектом связан «тег». Обычно этот тег представляет собой структуру с именем «[имя геометрического объекта]_tag». Используя теги для указания различных типов геометрических объектов, Boost.Geometry может обеспечить более эффективную и безопасную проверку типов и манипулирование ими. Ниже приведен простой пример программы, показывающий, как использовать теги для определения точки, сегмента линии и многоугольника и расчета их длин:

#include <iostream>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/register/point.hpp>

// 定义点类型
struct my_point_tag {};

struct my_point
{
    double x, y;

    // 为点类型注册tag
    typedef boost::geometry::model::point<double, 2, boost::geometry::cs::cartesian, my_point_tag> point_type;
};

// 注册点类型
BOOST_GEOMETRY_REGISTER_POINT_2D(my_point, double, boost::geometry::cs::cartesian, x, y);

// 定义线段类型
struct my_segment_tag {};

struct my_segment
{
    my_point start, end;

    // 为线段类型注册tag
    t

おすすめ

転載: blog.csdn.net/qq_37934722/article/details/132484837