CompoundPolygon.h
Go to the documentation of this file.
1 #pragma once
4 
5 namespace lanelet {
6 
11 class CompoundPolygon2d : public CompoundLineStringImpl<ConstPoint2d> {
12  public:
17  using MutableType = void;
19 
21  explicit CompoundPolygon2d(const CompoundPolygons2d& other)
22  : CompoundPolygon2d(utils::concatenate(other, [](auto& cls) { return cls.lineStrings(); })) {}
24  : CompoundPolygon2d(utils::concatenate(other, [](auto& cls) { return cls.lineStrings(); })) {}
25 
26  CompoundPolygon2d() = default;
28  explicit operator CompoundLineString2d() const { return CompoundLineString2d(constData(), inverted()); }
30  size_t numSegments() const noexcept { return std::max(size_t(1), size()); }
31 
33  BasicPolygon2d basicPolygon() const { return {basicBegin(), basicEnd()}; }
34 };
35 
40 class CompoundPolygon3d : public CompoundLineStringImpl<ConstPoint3d> {
41  public:
46  using MutableType = void;
50  : CompoundPolygon3d(utils::concatenate(other, [](auto& cls) { return cls.lineStrings(); })) {}
51  explicit CompoundPolygon3d(const CompoundPolygons3d& other)
52  : CompoundPolygon3d(utils::concatenate(other, [](auto& cls) { return cls.lineStrings(); })) {}
53 
54  CompoundPolygon3d() = default;
56  explicit operator CompoundLineString3d() const { return CompoundLineString3d(constData(), inverted()); }
58  size_t numSegments() const noexcept { return std::max(size_t(1), size()); }
59 
62  return BasicPolygon3d{basicBegin(), basicEnd(), BasicPolygon3d::allocator_type()};
63  }
64 };
65 
71 class CompoundHybridPolygon2d : public CompoundLineStringImpl<BasicPoint2d> {
72  public:
78  using MutableType = void;
80 
82  : CompoundHybridPolygon2d(utils::concatenate(other, [](auto& cls) { return cls.lineStrings(); })) {}
84  : CompoundHybridPolygon2d(utils::concatenate(other, [](auto& cls) { return cls.lineStrings(); })) {}
85 
86  CompoundHybridPolygon2d() = default;
88  explicit operator CompoundHybridLineString2d() const { return CompoundHybridLineString2d(constData(), inverted()); }
90  size_t numSegments() const noexcept { return std::max(size_t(1), size()); }
92  BasicPolygon2d basicPolygon() const { return {basicBegin(), basicEnd()}; }
93 };
94 
100 class CompoundHybridPolygon3d : public CompoundLineStringImpl<BasicPoint3d> {
101  public:
107  using MutableType = void;
109 
111  : CompoundHybridPolygon3d(utils::concatenate(other, [](auto& cls) { return cls.lineStrings(); })) {}
113  : CompoundHybridPolygon3d(utils::concatenate(other, [](auto& cls) { return cls.lineStrings(); })) {}
114  CompoundHybridPolygon3d() = default;
116  explicit operator CompoundHybridLineString3d() const { return CompoundHybridLineString3d(constData(), inverted()); }
118  size_t numSegments() const noexcept { return std::max(size_t(1), size()); }
119  BasicLineString basicLineString() = delete;
120  BasicPolygon3d basicPolygon() const { return {basicBegin(), basicEnd()}; }
121 };
122 } // namespace lanelet
CompoundHybridPolygon3d(const CompoundHybridLineStrings3d &other)
std::vector< CompoundLineString2d > CompoundLineStrings2d
Definition: Forward.h:76
CompoundLineStringImpl(const ConstLineStrings3d &ls=ConstLineStrings3d())
Construct from a vector of ConstLineString3d.
A Compound linestring in 3d (returns Point3d)
internal::SelectBasicLineStringT< BasicPointType > BasicLineString
CompoundHybridPolygon2d(const CompoundHybridLineStrings2d &other)
CompoundPolygon2d(const CompoundLineString2d &other)
Combines multiple linestrings to one polygon in 3d that returns BasicPoint3d.
CompoundPolygon2d(const CompoundLineStrings2d &other)
CompoundHybridPolygon3d(const CompoundHybridPolygons3d &other)
VectorT concatenate(ContainerT &&c)
Definition: Utilities.h:63
std::vector< CompoundPolygon2d > CompoundPolygons2d
Definition: Forward.h:87
BasicLineString basicLineString()=delete
A hybrid compound linestring in 2d (returns BasicPoint2d)
std::vector< CompoundLineString3d > CompoundLineStrings3d
Definition: Forward.h:77
Primitive 2d polygon with basic points.
BasicIterator basicBegin() const
returns a normal iterator to the internal point type at begin
BasicPolygon2d basicPolygon() const
CompoundHybridPolygon3d(const CompoundHybridLineString3d &other)
std::shared_ptr< const CompoundLineStringData > constData() const noexcept
returns the internal data on the linestrings managed by this object
Combines multiple linestrings to one polygon in 3d.
bool inverted() const noexcept
returns whether this is an inverted CompoundLineString
BasicPolygon2d basicPolygon() const
Identifies LineStringPrimitives.
Definition: Traits.h:9
BasicPolygon3d basicPolygon() const
BasicPolygon3d basicPolygon() const
CompoundPolygon3d(const CompoundPolygons3d &other)
CompoundPolygon2d(const CompoundPolygons2d &other)
std::vector< CompoundHybridPolygon2d > CompoundHybridPolygons2d
Definition: Forward.h:88
size_t numSegments() const noexcept
Returns the number of (geometrically valid) segments.
A Compound linestring in 2d (returns Point2d)
size_t numSegments() const noexcept
Returns the number of (geometrically valid) segments.
CompoundPolygon3d(const CompoundLineStrings3d &other)
CompoundHybridPolygon2d(const CompoundHybridLineString2d &other)
size_t numSegments() const noexcept
Returns the number of (geometrically valid) segments.
A hybrid compound linestring in 3d (returns BasicPoint3d)
Combines multiple linestrings to one polygon in 2d that returns BasicPoint2d.
BasicIterator basicEnd() const
returns a normal iterator for the internal point type at end
CompoundHybridPolygon2d(const CompoundHybridPolygons2d &other)
A collection of lineStrings that act as one line string.
Primitive 3d polygon with basic points.
Combines multiple linestrings to one polygon in 2d.
CompoundPolygon3d(const CompoundLineString3d &other)
std::vector< CompoundPolygon3d > CompoundPolygons3d
Definition: Forward.h:86
size_t size() const noexcept
return the total number of unique points
size_t numSegments() const noexcept
Returns the number of (geometrically valid) segments.
std::vector< CompoundHybridLineString3d > CompoundHybridLineStrings3d
Definition: Forward.h:79
std::vector< CompoundHybridPolygon3d > CompoundHybridPolygons3d
Definition: Forward.h:89
std::vector< CompoundHybridLineString2d > CompoundHybridLineStrings2d
Definition: Forward.h:78


lanelet2_core
Author(s): Fabian Poggenhans
autogenerated on Tue Jun 6 2023 02:23:32