image_framework_ymj/include/open3d/geometry/Geometry.h
2024-12-06 16:25:16 +08:00

86 lines
2.5 KiB
C++
Executable File

// ----------------------------------------------------------------------------
// - Open3D: www.open3d.org -
// ----------------------------------------------------------------------------
// Copyright (c) 2018-2023 www.open3d.org
// SPDX-License-Identifier: MIT
// ----------------------------------------------------------------------------
#pragma once
#include <string>
namespace open3d {
namespace geometry {
/// \class Geometry
///
/// \brief The base geometry class.
class Geometry {
public:
/// \enum GeometryType
///
/// \brief Specifies possible geometry types.
enum class GeometryType {
/// Unspecified geometry type.
Unspecified = 0,
/// PointCloud
PointCloud = 1,
/// VoxelGrid
VoxelGrid = 2,
/// Octree
Octree = 3,
/// LineSet
LineSet = 4,
/// MeshBase
MeshBase = 5,
/// TriangleMesh
TriangleMesh = 6,
/// HalfEdgeTriangleMesh
HalfEdgeTriangleMesh = 7,
/// Image
Image = 8,
/// RGBDImage
RGBDImage = 9,
/// TetraMesh
TetraMesh = 10,
/// OrientedBoundingBox
OrientedBoundingBox = 11,
/// AxisAlignedBoundingBox
AxisAlignedBoundingBox = 12,
};
public:
virtual ~Geometry() {}
protected:
/// \brief Parameterized Constructor.
///
/// \param type Specifies the type of geometry of the object constructed.
/// \param dimension Specifies whether the dimension is 2D or 3D.
Geometry(GeometryType type, int dimension)
: geometry_type_(type), dimension_(dimension) {}
public:
/// Clear all elements in the geometry.
virtual Geometry& Clear() = 0;
/// Returns `true` iff the geometry is empty.
virtual bool IsEmpty() const = 0;
/// Returns one of registered geometry types.
GeometryType GetGeometryType() const { return geometry_type_; }
/// Returns whether the geometry is 2D or 3D.
int Dimension() const { return dimension_; }
std::string GetName() const { return name_; }
void SetName(const std::string& name) { name_ = name; }
private:
/// Type of geometry from GeometryType.
GeometryType geometry_type_ = GeometryType::Unspecified;
/// Number of dimensions of the geometry.
int dimension_ = 3;
std::string name_;
};
} // namespace geometry
} // namespace open3d