geometry.h
Go to the documentation of this file.
1 
26 #ifndef TESSERACT_GEOMETRY_GEOMETRY_H
27 #define TESSERACT_GEOMETRY_GEOMETRY_H
28 
31 #include <boost/serialization/export.hpp>
32 #include <boost/uuid/uuid.hpp>
33 #include <memory>
34 #include <string>
35 #include <vector>
36 #include <cstdint>
38 
39 #include <tesseract_common/fwd.h>
40 
41 namespace boost::serialization
42 {
43 class access;
44 }
45 
46 namespace tesseract_geometry
47 {
48 enum class GeometryType : std::uint8_t
49 {
51  SPHERE,
52  CYLINDER,
53  CAPSULE,
54  CONE,
55  BOX,
56  PLANE,
57  MESH,
59  SDF_MESH,
60  OCTREE,
63 };
64 static const std::vector<std::string> GeometryTypeStrings = { "UNINITIALIZED", "SPHERE", "CYLINDER", "CAPSULE",
65  "CONE", "BOX", "PLANE", "MESH",
66  "CONVEX_MESH", "SDF_MESH", "OCTREE", "POLYGON_MESH",
67  "COMPOUND_MESH" };
68 
69 class Geometry
70 {
71 public:
72  using Ptr = std::shared_ptr<Geometry>;
73  using ConstPtr = std::shared_ptr<const Geometry>;
74 
76  virtual ~Geometry() = default;
77  Geometry(const Geometry&) = default;
78  Geometry& operator=(const Geometry&) = default;
79  Geometry(Geometry&&) = default;
80  Geometry& operator=(Geometry&&) = default;
81 
83  virtual Geometry::Ptr clone() const = 0;
84 
86  GeometryType getType() const;
87 
89  void setUUID(const boost::uuids::uuid& uuid);
90 
92  const boost::uuids::uuid& getUUID() const;
93 
94  bool operator==(const Geometry& rhs) const;
95  bool operator!=(const Geometry& rhs) const;
96 
97 private:
100 
102  boost::uuids::uuid uuid_{};
103 
106  template <class Archive>
107  void serialize(Archive& ar, const unsigned int version); // NOLINT
108 };
109 
110 using Geometrys = std::vector<Geometry::Ptr>;
111 using GeometrysConst = std::vector<Geometry::ConstPtr>;
112 } // namespace tesseract_geometry
113 
114 BOOST_SERIALIZATION_ASSUME_ABSTRACT(tesseract_geometry::Geometry)
115 
116 #endif // TESSERACT_GEOMETRY_GEOMETRY_H
tesseract_geometry::GeometryType::UNINITIALIZED
@ UNINITIALIZED
tesseract_geometry::GeometryType::COMPOUND_MESH
@ COMPOUND_MESH
tesseract_geometry::Geometry::Geometry
Geometry(GeometryType type=GeometryType::UNINITIALIZED)
Definition: geometry.cpp:40
tesseract_geometry::Geometry::getUUID
const boost::uuids::uuid & getUUID() const
Get the geometry UUID.
Definition: geometry.cpp:46
tesseract_geometry::Geometry::Ptr
std::shared_ptr< Geometry > Ptr
Definition: geometry.h:72
tesseract_geometry::GeometryType::CONE
@ CONE
tesseract_geometry::Geometry::operator=
Geometry & operator=(const Geometry &)=default
tesseract_geometry::Geometry::uuid_
boost::uuids::uuid uuid_
The uuid of the shape.
Definition: geometry.h:102
tesseract_geometry::Geometry
Definition: geometry.h:69
tesseract_geometry::GeometryType
GeometryType
Definition: geometry.h:48
TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
tesseract_geometry::GeometryType::MESH
@ MESH
tesseract_common::Serialization
tesseract_geometry::GeometryType::CYLINDER
@ CYLINDER
tesseract_geometry::GeometryTypeStrings
static const std::vector< std::string > GeometryTypeStrings
Definition: geometry.h:64
tesseract_geometry::Geometry::operator==
bool operator==(const Geometry &rhs) const
Definition: geometry.cpp:48
tesseract_geometry::GeometryType::PLANE
@ PLANE
tesseract_geometry::GeometryType::SPHERE
@ SPHERE
tesseract_geometry::GeometryType::CAPSULE
@ CAPSULE
boost::serialization
tesseract_geometry::Geometry::~Geometry
virtual ~Geometry()=default
fwd.h
tesseract_geometry::GeometrysConst
std::vector< Geometry::ConstPtr > GeometrysConst
Definition: geometry.h:111
tesseract_geometry::Geometry::clone
virtual Geometry::Ptr clone() const =0
Create a copy of this shape.
tesseract_geometry::GeometryType::SDF_MESH
@ SDF_MESH
tesseract_geometry::Geometry::access
friend class boost::serialization::access
Definition: geometry.h:104
tesseract_geometry::Geometry::operator!=
bool operator!=(const Geometry &rhs) const
Definition: geometry.cpp:49
tesseract_geometry::Geometry::type_
GeometryType type_
The type of the shape.
Definition: geometry.h:99
TESSERACT_COMMON_IGNORE_WARNINGS_POP
#define TESSERACT_COMMON_IGNORE_WARNINGS_POP
tesseract_geometry::Geometry::serialize
void serialize(Archive &ar, const unsigned int version)
Definition: geometry.cpp:52
tesseract_geometry::Geometry::getType
GeometryType getType() const
Get the geometry type.
Definition: geometry.cpp:42
tesseract_geometry::GeometryType::BOX
@ BOX
tesseract_geometry::Geometry::setUUID
void setUUID(const boost::uuids::uuid &uuid)
Set the geometry UUID.
Definition: geometry.cpp:44
tesseract_geometry
Definition: fwd.h:31
tesseract_geometry::GeometryType::OCTREE
@ OCTREE
tesseract_geometry::GeometryType::POLYGON_MESH
@ POLYGON_MESH
tesseract_geometry::Geometry::ConstPtr
std::shared_ptr< const Geometry > ConstPtr
Definition: geometry.h:73
tesseract_geometry::GeometryType::CONVEX_MESH
@ CONVEX_MESH
macros.h
tesseract_geometry::Geometrys
std::vector< Geometry::Ptr > Geometrys
Definition: geometry.h:110


tesseract_geometry
Author(s): Levi Armstrong
autogenerated on Sun May 18 2025 03:01:46