$darkmode
VCG Library
Classes | Public Types | Static Public Member Functions | List of all members
vcg::tri::UpdateFlags< UpdateMeshType > Class Template Reference

Management, updating and computation of per-vertex and per-face flags (like border flags). More...

#include <vcg/complex/algorithms/update/flag.h>

Classes

class  EdgeSorter
 

Public Types

typedef UpdateMeshType MeshType
 
typedef MeshType::ScalarType ScalarType
 
typedef MeshType::VertexType VertexType
 
typedef MeshType::VertexPointer VertexPointer
 
typedef MeshType::VertexIterator VertexIterator
 
typedef MeshType::EdgeType EdgeType
 
typedef MeshType::EdgePointer EdgePointer
 
typedef MeshType::EdgeIterator EdgeIterator
 
typedef MeshType::FaceType FaceType
 
typedef MeshType::FacePointer FacePointer
 
typedef MeshType::FaceIterator FaceIterator
 
typedef MeshType::TetraType TetraType
 
typedef MeshType::TetraPointer TetraPointer
 
typedef MeshType::TetraIterator TetraIterator
 

Static Public Member Functions

static void Clear (MeshType &m)
 Reset all the mesh flags (vertexes edge faces) setting everithing to zero (the default value for flags)
 
static void VertexClear (MeshType &m, unsigned int FlagMask=0xffffffff)
 
static void EdgeClear (MeshType &m, unsigned int FlagMask=0xffffffff)
 
static void FaceClear (MeshType &m, unsigned int FlagMask=0xffffffff)
 
static void TetraClear (MeshType &m, unsigned int FlagMask=0xffffffff)
 
static void VertexSet (MeshType &m, unsigned int FlagMask)
 
static void EdgeSet (MeshType &m, unsigned int FlagMask)
 
static void FaceSet (MeshType &m, unsigned int FlagMask)
 
static void TetraSet (MeshType &m, unsigned int FlagMask)
 
static void VertexClearV (MeshType &m)
 
static void VertexClearS (MeshType &m)
 
static void VertexClearB (MeshType &m)
 
static void EdgeClearV (MeshType &m)
 
static void FaceClearV (MeshType &m)
 
static void FaceClearB (MeshType &m)
 
static void FaceClearS (MeshType &m)
 
static void FaceClearF (MeshType &m)
 
static void FaceClearFaceEdgeS (MeshType &m)
 
static void EdgeSetV (MeshType &m)
 
static void VertexSetV (MeshType &m)
 
static void VertexSetS (MeshType &m)
 
static void VertexSetB (MeshType &m)
 
static void FaceSetV (MeshType &m)
 
static void FaceSetB (MeshType &m)
 
static void FaceSetF (MeshType &m)
 
static void TetraClearV (MeshType &m)
 
static void TetraClearS (MeshType &m)
 
static void TetraClearB (MeshType &m)
 
static void TetraSetV (MeshType &m)
 
static void TetraSetS (MeshType &m)
 
static void TetraSetB (MeshType &m)
 
static void FaceBorderFromFF (MeshType &m)
 Compute the border flags for the faces using the Face-Face Topology. More...
 
static void TetraBorderFromTT (MeshType &m)
 Compute the border flags for the tetras using the Tetra-Tetra Topology. More...
 
static void VertexBorderFromTT (MeshType &m)
 
static void FaceBorderFromVF (MeshType &m)
 
static void VertexBorderFromNone (MeshType &m)
 
static void FaceBorderFromNone (MeshType &m)
 
static void VertexBorderFromFaceAdj (MeshType &m)
 Compute the PerVertex Border flag deriving it from the face-face adjacency.
 
static void VertexBorderFromFaceBorder (MeshType &m)
 Compute the PerVertex Border flag deriving it from the border flag of faces.
 
static void VertexBorderFromEdgeAdj (MeshType &m)
 Compute the PerVertex Border flag deriving it from the Edge-Edge adjacency (made for edgemeshes)
 
static void FaceEdgeSelSignedCrease (MeshType &m, float AngleRadNeg, float AngleRadPos, bool MarkBorderFlag=false)
 Marks feature edges according to two signed dihedral angles. Actually it uses the face_edge selection bit on faces, we select the edges where the signed dihedral angle between the normal of two incident faces , is outside the two given thresholds. In this way all the edges that are almost planar are marked as non selected (e.g. edges to be ignored) Note that it uses the signed dihedral angle convention (negative for concave edges and positive for convex ones);. More...
 
static void FaceEdgeSelBorder (MeshType &m)
 Selects feature edges according to Face adjacency.
 
static void FaceEdgeSelCrease (MeshType &m, float AngleRad)
 Marks feature edges according to a given angle Actually it uses the face_edge selection bit on faces, we select the edges where the dihedral angle between the normal of two incident faces is larger than , the given thresholds. In this way all the near planar edges are marked remains not selected (e.g. edges to be ignored)
 

Detailed Description

template<class UpdateMeshType>
class vcg::tri::UpdateFlags< UpdateMeshType >

Management, updating and computation of per-vertex and per-face flags (like border flags).

This class is used to compute or update some of the flags that can be stored in the mesh components. For now just Border flags (e.g. the flag that tells if a given edge of a face belong to a border of the mesh or not).

Member Function Documentation

◆ FaceBorderFromFF()

template<class UpdateMeshType >
static void vcg::tri::UpdateFlags< UpdateMeshType >::FaceBorderFromFF ( MeshType &  m)
inlinestatic

Compute the border flags for the faces using the Face-Face Topology.

Warning
Obviously it assumes that the topology has been correctly computed (see: UpdateTopology::FaceFace )

◆ FaceBorderFromNone()

template<class UpdateMeshType >
static void vcg::tri::UpdateFlags< UpdateMeshType >::FaceBorderFromNone ( MeshType &  m)
inlinestatic

Computes per-face border flags without requiring any kind of topology It has a O(fn log fn) complexity.

◆ FaceEdgeSelSignedCrease()

template<class UpdateMeshType >
static void vcg::tri::UpdateFlags< UpdateMeshType >::FaceEdgeSelSignedCrease ( MeshType &  m,
float  AngleRadNeg,
float  AngleRadPos,
bool  MarkBorderFlag = false 
)
inlinestatic

Marks feature edges according to two signed dihedral angles. Actually it uses the face_edge selection bit on faces, we select the edges where the signed dihedral angle between the normal of two incident faces , is outside the two given thresholds. In this way all the edges that are almost planar are marked as non selected (e.g. edges to be ignored) Note that it uses the signed dihedral angle convention (negative for concave edges and positive for convex ones);.

Optionally it can also mark as feature edges also the boundary edges.

◆ TetraBorderFromTT()

template<class UpdateMeshType >
static void vcg::tri::UpdateFlags< UpdateMeshType >::TetraBorderFromTT ( MeshType &  m)
inlinestatic

Compute the border flags for the tetras using the Tetra-Tetra Topology.

Warning
Obviously it assumes that the topology has been correctly computed (see: UpdateTopology::FaceFace )

The documentation for this class was generated from the following file: