13 #ifndef EBGeometry_DCEL_Vertex
14 #define EBGeometry_DCEL_Vertex
38 template <
class T,
class Meta>
216 inline const
Vec3T<T>&
228 inline const
Vec3T<T>&
252 inline const std::vector<
FacePtr>&
315 #include "EBGeometry_NamespaceFooter.hpp"
317 #include "EBGeometry_DCEL_VertexImplem.hpp"
Declaration of a polygon face class for use in DCEL descriptions of polygon tesselations.
Declaration of 2D and 3D point/vector classes with templated precision. Used with DCEL tools.
Edge iterator class.
Definition: EBGeometry_DCEL_Iterator.hpp:28
Edge class.
Definition: EBGeometry_DCEL_Edge.hpp:47
Face class.
Definition: EBGeometry_DCEL_Face.hpp:49
Vertex class.
Definition: EBGeometry_DCEL_Vertex.hpp:40
std::shared_ptr< Face > FacePtr
Alias for face pointer type.
Definition: EBGeometry_DCEL_Vertex.hpp:75
void setPosition(const Vec3 &a_position) noexcept
Set the vertex position.
VertexT()
Default constructor.
void computeVertexNormalAverage() noexcept
Compute the vertex normal, using an average the normal vector in this vertex's face list (m_faces)
std::shared_ptr< Vertex > VertexPtr
Alias for vertex pointer type.
Definition: EBGeometry_DCEL_Vertex.hpp:65
VertexT(const Vec3 &a_position)
Partial constructor.
Vec3T< T > & getPosition() noexcept
Return modifiable vertex position.
Vec3T< T > & getNormal() noexcept
Return modifiable vertex normal vector.
void setEdge(const EdgePtr &a_edge) noexcept
Set the reference to the outgoing edge.
T unsignedDistance2(const Vec3 &a_x0) const noexcept
Get the squared unsigned distance to this vertex.
std::vector< FacePtr > m_faces
List of faces connected to this vertex (these must be "manually" added)
Definition: EBGeometry_DCEL_Vertex.hpp:306
std::shared_ptr< Edge > EdgePtr
Alias for edge pointer type.
Definition: EBGeometry_DCEL_Vertex.hpp:70
void setNormal(const Vec3 &a_normal) noexcept
Set the vertex normal vector.
EdgePtr & getOutgoingEdge() noexcept
Return modifiable pointer to outgoing edge.
void addFace(const FacePtr &a_face) noexcept
Add a face to the polygon face list.
T signedDistance(const Vec3 &a_x0) const noexcept
Get the signed distance to this vertex.
std::vector< FacePtr > & getFaces() noexcept
Get modifiable polygon face list for this vertex.
void flip() noexcept
Flip the normal vector.
Vec3 m_normal
Vertex normal vector.
Definition: EBGeometry_DCEL_Vertex.hpp:301
virtual ~VertexT()
Destructor (does nothing)
VertexT(const Vec3 &a_position, const Vec3 &a_normal)
Constructor.
VertexT(const Vertex &a_otherVertex)
Full copy constructor.
Meta m_metaData
Meta-data for this vertex.
Definition: EBGeometry_DCEL_Vertex.hpp:311
EdgePtr m_outgoingEdge
Pointer to an outgoing edge from this vertex.
Definition: EBGeometry_DCEL_Vertex.hpp:291
void computeVertexNormalAngleWeighted() noexcept
Compute the vertex normal, using the pseudonormal algorithm which weights the normal with the subtend...
void define(const Vec3 &a_position, const EdgePtr &a_edge, const Vec3 &a_normal) noexcept
Define function.
Meta & getMetaData() noexcept
Get meta-data.
Vec3 m_position
Vertex position.
Definition: EBGeometry_DCEL_Vertex.hpp:296
void normalizeNormalVector() noexcept
Normalize the normal vector, ensuring its length is 1.
Three-dimensional vector class with arithmetic operators.
Definition: EBGeometry_Vec.hpp:218
Namespace containing various double-connected edge list (DCEL) functionality.