30 #include <unordered_map> 48 HalfEdge(
const Eigen::Vector2i &vertex_indices,
74 Eigen::Vector3d
GetCenter()
const override;
78 const Eigen::Matrix4d &transformation)
override;
80 bool relative =
true)
override;
82 bool center =
true)
override;
84 const Eigen::Vector3d &rotation,
std::vector< int > BoundaryHalfEdgesFromVertex(int vertex_index) const
Definition: HalfEdgeTriangleMesh.cpp:181
std::vector< Eigen::Vector3d > triangle_normals_
Definition: HalfEdgeTriangleMesh.h:134
HalfEdgeTriangleMesh operator+(const HalfEdgeTriangleMesh &mesh) const
Definition: HalfEdgeTriangleMesh.cpp:392
Definition: Geometry.h:32
bool HasVertices() const
Definition: HalfEdgeTriangleMesh.h:92
std::vector< HalfEdge > half_edges_
Definition: HalfEdgeTriangleMesh.h:137
HalfEdgeTriangleMesh & Translate(const Eigen::Vector3d &translation, bool relative=true) override
Definition: HalfEdgeTriangleMesh.cpp:269
int NextHalfEdgeOnBoundary(int curr_half_edge_index) const
Definition: HalfEdgeTriangleMesh.cpp:289
Definition: BoundingVolume.h:90
bool IsEmpty() const override
Definition: HalfEdgeTriangleMesh.cpp:239
std::vector< std::vector< int > > GetBoundaries() const
Returns a vector of boundaries. A boundary is a vector of vertices.
Definition: HalfEdgeTriangleMesh.cpp:215
HalfEdge()
Definition: HalfEdgeTriangleMesh.h:43
HalfEdgeTriangleMesh & Transform(const Eigen::Matrix4d &transformation) override
Definition: HalfEdgeTriangleMesh.cpp:261
OrientedBoundingBox GetOrientedBoundingBox() const override
Definition: HalfEdgeTriangleMesh.cpp:257
std::vector< std::vector< int > > ordered_half_edge_from_vertex_
Definition: HalfEdgeTriangleMesh.h:141
Definition: HalfEdgeTriangleMesh.h:39
static std::shared_ptr< HalfEdgeTriangleMesh > CreateFromMesh(const TriangleMesh &mesh)
Definition: HalfEdgeTriangleMesh.cpp:319
Definition: BoundingVolume.h:38
RotationType
Definition: Geometry3D.h:43
std::vector< Eigen::Vector3d > vertex_colors_
Definition: HalfEdgeTriangleMesh.h:132
HalfEdgeTriangleMesh & Clear() override
Clear all data in HalfEdgeTriangleMesh.
Definition: HalfEdgeTriangleMesh.cpp:47
Eigen::Vector2i vertex_indices_
Definition: HalfEdgeTriangleMesh.h:60
Definition: Geometry3D.h:41
HalfEdgeTriangleMesh & RemoveDuplicatedTriangles()
Definition: HalfEdgeTriangleMesh.cpp:356
AxisAlignedBoundingBox GetAxisAlignedBoundingBox() const override
Definition: HalfEdgeTriangleMesh.cpp:253
Eigen::Vector3d GetMinBound() const override
Definition: HalfEdgeTriangleMesh.cpp:241
Eigen::Vector3d GetMaxBound() const override
Definition: HalfEdgeTriangleMesh.cpp:245
HalfEdgeTriangleMesh & Rotate(const Eigen::Vector3d &rotation, bool center=true, RotationType type=RotationType::XYZ) override
Definition: HalfEdgeTriangleMesh.cpp:281
HalfEdgeTriangleMesh & RemoveDuplicatedVertices()
Definition: HalfEdgeTriangleMesh.cpp:347
char type
Definition: FilePCD.cpp:56
HalfEdgeTriangleMesh & RemoveDegenerateTriangles()
Definition: HalfEdgeTriangleMesh.cpp:374
long vertex_index
Definition: FilePLY.cpp:45
int NextHalfEdgeFromVertex(int init_half_edge_index) const
Definition: HalfEdgeTriangleMesh.cpp:171
int triangle_index_
Definition: HalfEdgeTriangleMesh.h:62
Definition: PinholeCameraIntrinsic.cpp:34
HalfEdgeTriangleMesh & Scale(const double scale, bool center=true) override
Definition: HalfEdgeTriangleMesh.cpp:275
Eigen::Vector3d GetCenter() const override
Definition: HalfEdgeTriangleMesh.cpp:249
GeometryType
Definition: Geometry.h:34
HalfEdgeTriangleMesh & operator+=(const HalfEdgeTriangleMesh &mesh)
Definition: HalfEdgeTriangleMesh.cpp:383
int next_
Definition: HalfEdgeTriangleMesh.h:56
HalfEdgeTriangleMesh(Geometry::GeometryType type)
Definition: HalfEdgeTriangleMesh.h:121
int twin_
Definition: HalfEdgeTriangleMesh.h:58
std::vector< Eigen::Vector3i > triangles_
Definition: HalfEdgeTriangleMesh.h:133
Definition: HalfEdgeTriangleMesh.h:41
bool ComputeHalfEdges()
Definition: HalfEdgeTriangleMesh.cpp:54
HalfEdgeTriangleMesh & RemoveUnreferencedVertices()
Definition: HalfEdgeTriangleMesh.cpp:365
bool IsBoundary() const
Definition: HalfEdgeTriangleMesh.h:52
Definition: TriangleMesh.h:43
std::vector< int > BoundaryVerticesFromVertex(int vertex_index) const
Definition: HalfEdgeTriangleMesh.cpp:203
std::vector< std::unordered_set< int > > adjacency_list_
Definition: HalfEdgeTriangleMesh.h:135
std::vector< Eigen::Vector3d > vertices_
Definition: HalfEdgeTriangleMesh.h:130
HalfEdgeTriangleMesh()
Definition: HalfEdgeTriangleMesh.h:66
std::vector< Eigen::Vector3d > vertex_normals_
Definition: HalfEdgeTriangleMesh.h:131
bool HasHalfEdges() const
True if half-edges have already been computed.
Definition: HalfEdgeTriangleMesh.cpp:166