C3D Toolkit  Kernel - 118060, Vision - 2.15.0.1825

Mesh topology representation as a halfedge. More...

#include <polymesh_topo.h>

+ Inheritance diagram for MbPolymeshTopo:
+ Collaboration diagram for MbPolymeshTopo:

Public Member Functions

virtual ~MbPolymeshTopo ()
 Destructor.
 
virtual bool GetMesh (MbMesh &mesh) const =0
 Create a polygonal geometric object MbMesh by segmentation. More...
 
virtual MbPolymeshTopoClone () const =0
 Clone.
 
virtual void CalculateGabarit (const MbMatrix3D &matrInto, MbCube &bb) const =0
 Calculate a bounding box in the local coordinate system. More...
 
virtual const MbHalfedgeGetMeshTopo () const =0
 Get mesh topology.
 
virtual void Reserve (size_t nVx, size_t nEd, size_t nF)=0
 Reserve memory for vertices, edges and facets. More...
 
virtual size_t CloneVertex (size_t iVx)=0
 Clone vertex. More...
 
virtual size_t AddVertex ()=0
 Add an active vertex.
 
virtual size_t AddEdge ()=0
 Add an active edge.
 
virtual size_t AddFacet ()=0
 Add an active facet.
 
virtual void MakeVertexInactive (size_t iVx)=0
 Make a vertex inactive. More...
 
virtual void MakeEdgeInactive (size_t iEd)=0
 Make an edge inactive. More...
 
virtual void MakeFacetInactive (size_t iF)=0
 Make an facet inactive. More...
 
virtual void SewEdges (size_t iEd0, size_t iEd1)=0
 Sew the edges. More...
 
virtual size_t AddFacet (const c3d::IndicesVector &vertices)=0
 Add a facet by given vertices. More...
 
virtual void SewByVertices ()=0
 Sew mesh (set twins) after adding all facets by AddFacet( const c3d::IndicesVector & vertices ) function.
 
virtual void DeleteInactive ()=0
 Remove inactive vertices, edges, facets, regions and loops.
 
virtual void Invert ()=0
 Invert normals.
 
virtual void Transform (const MbMatrix3D &matr)=0
 Transform according to the matrix.
 
virtual void Move (const MbVector3D &to)=0
 Translate along a vector.
 
virtual void Rotate (const MbAxis3D &axis, double angle)=0
 Rotate around an axis.
 
virtual void DeleteFacets (const c3d::IndicesVector &facets)=0
 Delete facets. More...
 
virtual bool FlipEdge (size_t iEd)=0
 Flip an edge. More...
 
virtual size_t SplitEdge (size_t iEd, double prm)=0
 Split an edge at a ratio. More...
 
virtual void SplitFacet (size_t eVx0, size_t eVx1, c3d::IndicesPair &eNew)=0
 Split a facet by creating an edge connecting its two given edges. More...
 
virtual bool JoinEdgeFacets (size_t iEd)=0
 Join facets sharing a given edge. More...
 
virtual bool RemoveVertexValence2 (size_t iVx)=0
 Remove the vertex of valence two and join the corresponding edges into one. More...
 
virtual size_t InsertVertexTriangle (size_t iTr, double u, double v)=0
 Insert a vertex into a triangle by baricentric coordinates. More...
 
virtual size_t InsertVertexFacet (const c3d::IndicesVector &edgesSplit, const std::array< size_t, 3 > &edgesInterpolate, double u, double v)=0
 Insert a vertex into a facet by baricentric coordinates. More...
 
virtual double FindNearest (const MbCartPoint3D &pnt, MbCartPoint3D &pntProj, size_t &iFacet) const =0
 Find the nearest point and return the distance to it. More...
 
virtual bool FindLineIntersection (const MbAxis3D &ray, MbCartPoint3D &pntCross, double &tRes, size_t &iFacet) const =0
 Find the nearest point of intersection with a ray. More...
 
virtual bool TriangulateFacet (size_t iFacet)=0
 Triangulate a given facet. More...
 
virtual void GetPart (const c3d::IndicesVector &facets, MbPolymeshTopo &part) const =0
 Gather selected facets into a separate object. More...
 
virtual bool IsSegmented () const =0
 Check whether the segmentation is initialized.
 
virtual void Initialize (const MbHalfedgeBoundaryCriterionBase &crit)=0
 Initialize a segmentation by a boundary criterion.
 
virtual void Initialize ()=0
 Initialize segmentation with one region.
 
virtual const MbHalfedgeGetSegmTopo () const =0
 Get the topology of a segmentation.
 
virtual size_t LoopsCount () const =0
 Get loop count.
 
virtual const MbSegmentationLoopLoop (size_t iLoop) const =0
 Get a loop.
 
virtual bool IsInnerLoop (size_t iLoop) const =0
 Check whether the loop is inner.
 
virtual size_t RegionCount () const =0
 Get region count.
 
virtual bool IsRegionActive (size_t iRegion) const =0
 Check whether the region is active.
 
virtual size_t SubRegionsCount () const =0
 Get subregions count.
 
virtual size_t SubRegionsCount (size_t iRegion) const =0
 Get subregion count for a given region.
 
virtual const MbSegmentationSubRegionSubRegion (size_t iSub) const =0
 Get a subregion.
 
virtual size_t EdgeSegmCount () const =0
 Get segmentation edge count.
 
virtual const MbHalfedgeEdgeEdgeSegm (size_t iEdSegm) const =0
 Get a segmentation edge.
 
virtual bool IsInnerEdge (size_t iEdSegm) const =0
 Is a segmentation edge inner.
 
virtual size_t GetSegmEdgeId (size_t iEdTopo) const =0
 Get the index of a segmentation edge for a mesh edge.
 
virtual void GetFacetRegionId (size_t iFacet, size_t &iRegion, size_t &iSubRegion) const =0
 Get the region index and subregion index for the given facet.
 
virtual size_t VertexSegmCount () const =0
 Get segmentation vertex count.
 
virtual const MbHalfedgeVertexVertexSegm (size_t iVxSegm) const =0
 Get a segmentation vertex.
 
virtual void GetRegion (size_t r, c3d::IndicesVector &facets) const =0
 Get the indices of facets inside a region. More...
 
virtual void GetSubRegion (size_t iSub, c3d::IndicesVector &facets, bool bAdd=false) const =0
 Get the indices of facets inside a subregion. More...
 
virtual void DeleteRegion (size_t iRegion)=0
 Delete a region.
 
virtual void SplitByEdgesTopo (const c3d::IndicesVector &splitSet, bool bKeepRegions)=0
 Split a segmentation by seleted edges. More...
 
virtual void RemoveTopoEdgesFromSegm (const c3d::IndicesVector &edgesToDel)=0
 Remove mesh edges from segmentation edges. More...
 
virtual bool RemoveSegmEdges (const c3d::IndicesVector &edgesToDel)=0
 Segmentation edges to remove. Merges all regions connected through removed edges into one. This region has the ID of the original region with the largest area. More...
 
virtual void MergeRegions (const c3d::IndicesVector &regions, bool bRemoveValence2)=0
 Merge several regions into one. More...
 
virtual void UnsewSegmEdges (const c3d::IndicesVector &edgesSegmToUnsew)=0
 Unsew segmentation edges. More...
 
virtual void UnsewTopoEdges (const c3d::IndicesVector &edgesTopoToUnsew)=0
 Unsew topology edges. More...
 
virtual void SplitByFacetsTopo (const c3d::IndicesVector &splitSet, bool bMakeOneRegion, bool bKeepRegions)=0
 Split a segmentation by a given facet set. More...
 
virtual void SplitRegionBySubregions (size_t iReg)=0
 Make new regions from the subregions of a region.
 
virtual c3d::IndicesPair SplitSegmentationEdge (size_t iEdSegm, size_t iEdTopo, size_t iVxSegmSplit=SYS_MAX_T)=0
 Split a segmentation edge by a given mesh edge. More...
 
virtual bool ExtractSubRegionAsRegion (size_t iSub)=0
 Make a new region from a given subregion.
 
virtual void RemoveSegmVertexValence2 (size_t iVx)=0
 Remove the segmentation vertex of valence two and join the corresponding segmentation edges into one.
 
virtual size_t GetTopoVertex (size_t iVxSegm) const =0
 Get the index of a mesh vertex corresponding to a given segmentation vertex.
 
virtual size_t NextLoopEdge (size_t iEdSegm, bool bExcudeInner) const =0
 Get the next segmentation edge in a loop. More...
 
virtual size_t PrevLoopEdge (size_t iEdSegm, bool bExcudeInner) const =0
 Get the previous segmentation edge in a loop. More...
 
virtual size_t GetSegmEdgeRegionId (size_t iEdSegm) const =0
 Get the index of a region containing a given segmentation edge.
 
virtual size_t GetSegmEdgeSubRegionId (size_t iEdSegm) const =0
 Get the index of a subregion containing a given segmentation edge.
 
virtual size_t GetLoopRegionId (size_t iLoop) const =0
 Get the index of a region containing a given loop.
 
virtual size_t GetLoopSubRegionId (size_t iLoop) const =0
 Get the index of a subregion containing a given loop.
 
virtual size_t GetNeighborRegionId (size_t iEdSegm) const =0
 Get the index of a region on the other side of a segmentation edge.
 
virtual size_t GetNeighborSubRegionId (size_t iEdSegm) const =0
 Get the index of a subregion on the other side of a segmentation edge.
 
virtual MbAttributeContainerGetSegmRegionModelAttributes (size_t iRegion, bool bCreate)=0
 Get the region attribute container.
 
virtual const MbAttributeContainerGetSegmRegionModelAttributes (size_t iRegion) const =0
 Get the region attribute container.
 
virtual MbAttributeContainerGetSegmEdgeModelAttributes (size_t iEdSegm, bool bCreate)=0
 Get the segmentation edge attribute container.
 
virtual const MbAttributeContainerGetSegmEdgeModelAttributes (size_t iEdSegm) const =0
 Get the segmentation edge attribute container.
 
virtual MbAttributeContainerGetSegmVertexModelAttributes (size_t iVxSegm, bool bCreate)=0
 Get the segmentation vertex attribute container.
 
virtual const MbAttributeContainerGetSegmVertexModelAttributes (size_t iVxSegm) const =0
 Get the segmentation vertex attribute container.
 
size_t MeshHalfedgeAttributeCount () const
 Get mesh attribute count.
 
size_t SegmHalfedgeAttributeCount () const
 Get segmentation attribute count.
 
template<class T >
T * AddMeshHalfedgeAttribute ()
 Add to the mesh an attribute of a given type.
 
template<class T >
T * AddSegmHalfedgeAttribute ()
 Add to the segmentation an attribute of a given type.
 
template<class T >
T * GetMeshHalfedgeAttribute ()
 Get the mesh attribute of a given type for editing.
 
template<class T >
const T * GetMeshHalfedgeAttribute () const
 Get the mesh attribute of a given type.
 
template<class T >
T * GetSegmHalfedgeAttribute ()
 Get the segmentation attribute of a given type for editing.
 
template<class T >
const T * GetSegmHalfedgeAttribute () const
 Get the segmentation attribute of a given type.
 
template<class T >
void DeleteMeshHalfedgeAttribute ()
 Delete the mesh attribute of a given type.
 
template<class T >
void DeleteSegmHalfedgeAttribute ()
 Delete the segmentation attribute of a given type.
 
MbHalfedgeAttrBaseGetMeshHalfedgeAttributeByIndex (size_t ind)
 Get the mesh attribute by index for editing.
 
const MbHalfedgeAttrBaseGetMeshHalfedgeAttributeByIndex (size_t ind) const
 Get the mesh attribute by index.
 
MbHalfedgeAttrBaseGetSegmHalfedgeAttributeByIndex (size_t ind)
 Get the segmentation attribute by index for editing.
 
const MbHalfedgeAttrBaseGetSegmHalfedgeAttributeByIndex (size_t ind) const
 Get the segmentation attribute by index.
 
void DeleteMeshHalfedgeAttribute (MbHalfedgeAttrBase *pAttr)
 Delete the given mesh attribute.
 
void DeleteSegmHalfedgeAttribute (MbHalfedgeAttrBase *pAttr)
 Delete the given segmentation attribute.
 
virtual const MbFaceShellGetSubstrateShell () const =0
 Get the substrate shell.
 
virtual void DeleteSubstrateShell ()=0
 Delete the substrate shell.
 
virtual const MbFaceGetSubstrateShellFace (size_t iRegion) const =0
 Get the shell face corresponding to a given segmentation region.
 
virtual const MbCurveEdgeGetSubstrateShellEdge (size_t iEdSegm) const =0
 Get the shell edge corresponding to a given segmentation edge.
 
virtual bool GetRegionPointByParameter (size_t iReg, const MbCartPoint &uv, bool bPercents, MbCartPoint3D &point) const =0
 Get the region 3D point by the 2D parameter. More...
 
- Public Member Functions inherited from MbRefItem
virtual MbeRefType RefType () const
 Registration type (for copying, duplication).
 
void AddRegistrator (MbRegDuplicate *reg) const
 Add the register.
 
void RemoveRegistrator (MbRegDuplicate *reg) const
 Remove the register.
 
refcount_t GetUseCount () const
 Get count of references (get count of owners of an object).
 
refcount_t AddRef () const
 Increase count of references by one.
 
refcount_t DecRef () const
 Decrease count of references by one.
 
refcount_t Release () const
 Decrease count of references by one and if count of references became zero, then remove itself.
 

Static Public Member Functions

static MbPolymeshTopoCreate ()
 Create an empty object.
 
static MbPolymeshTopoCreate (const MbMesh &mesh, double toleranceSew)
 Create an object by MbMesh. More...
 
static MbPolymeshTopoCreate (const IMeshProvider &provider, const MbRepairInconsistentMeshParams &params)
 Create an object by mesh provider and repairing parameters. More...
 

Protected Member Functions

 MbPolymeshTopo ()
 Constructor.
 
- Protected Member Functions inherited from MbRefItem
 MbRefItem ()
 Constructor without parameters.
 

Detailed Description

Mesh topology representation as a halfedge.

Halfedge representation portrays a polygonal model as a directed graph. The key element is a directed edge associated with the facet to which it belongs and the vertex from which the edge originates. Each non-boundary edge of the surface in this model is represented as a pair of oppositely directed edges (the edge itself and its twin).
With graph representation information about the topology can be stored and used in a wide range of more efficient graph-based algorithms as compared with the traditional representation, which suffers with inefficiency.
For traversal edges are organized into closed loops around facets. For an edge, you can get the next edge in this loop, the previous edge in the loop, the facet to which the loop belongs, and the twin edge. Facets are grouped around the vertex form a vertex fan. An additional way to iterate through the topology is to cycle through facets or edge pairs in the vertex fan. For this purpose each vertex contains a reference to a beginning edge for a counterclockwise traversal.
To provide a flexible way to manipulate data associated with the topology, each element can be assigned with an attribute that stores additional information. For example, a vertex can have an attribute that stores its 3D coordinats. With attributes it is possible to store user data with bool, float, double, unsigned int, int, and size_t information.
This object, in addition to the topology, stores information about the object's segmentation.
An object can be logically divided into regions. Each region can store a set of connected components, named subregions. Similar to the halfedge organization, each subregion can have one or more edge loops.

Warning
Under development.

Member Function Documentation

◆ Create() [1/2]

static MbPolymeshTopo* MbPolymeshTopo::Create ( const MbMesh mesh,
double  toleranceSew 
)
static

Create an object by MbMesh.

Parameters
[in]mesh- A polygonal geometric object.
[in]toleranceSew- Metric tolerance of points coincidence..
Returns
Returns pointer to created object.

◆ Create() [2/2]

static MbPolymeshTopo* MbPolymeshTopo::Create ( const IMeshProvider provider,
const MbRepairInconsistentMeshParams params 
)
static

Create an object by mesh provider and repairing parameters.

Parameters
[in]provider- A container for polygonal object data.
[in]params- Repairing parameters..
Returns
Returns pointer to created object.

◆ GetMesh()

virtual bool MbPolymeshTopo::GetMesh ( MbMesh mesh) const
pure virtual

Create a polygonal geometric object MbMesh by segmentation.

Parameters
[out]mesh- A polygonal geometric object.
Returns
Returns true, if an object is successfully constructed, and false otherwise.

◆ CalculateGabarit()

virtual void MbPolymeshTopo::CalculateGabarit ( const MbMatrix3D matrInto,
MbCube bb 
) const
pure virtual

Calculate a bounding box in the local coordinate system.

Parameters
[in]matrInto- A matrix of transformation into a local coordinate system.
[out]bb- A bounding box.

◆ Reserve()

virtual void MbPolymeshTopo::Reserve ( size_t  nVx,
size_t  nEd,
size_t  nF 
)
pure virtual

Reserve memory for vertices, edges and facets.

Parameters
[in]nVx- Vertex count.
[in]nEd- Edge count.
[in]nF- Facet count.

◆ CloneVertex()

virtual size_t MbPolymeshTopo::CloneVertex ( size_t  iVx)
pure virtual

Clone vertex.

Parameters
[in]iVx- The index of a cloned vertex.
Returns
Returns the index of a new vertex.

◆ MakeVertexInactive()

virtual void MbPolymeshTopo::MakeVertexInactive ( size_t  iVx)
pure virtual

Make a vertex inactive.

Parameters
[in]iVx- The index of a vertex.

◆ MakeEdgeInactive()

virtual void MbPolymeshTopo::MakeEdgeInactive ( size_t  iEd)
pure virtual

Make an edge inactive.

Parameters
[in]iEd- The index of an edge.

◆ MakeFacetInactive()

virtual void MbPolymeshTopo::MakeFacetInactive ( size_t  iF)
pure virtual

Make an facet inactive.

Parameters
[in]iF- The index of a facet.

◆ SewEdges()

virtual void MbPolymeshTopo::SewEdges ( size_t  iEd0,
size_t  iEd1 
)
pure virtual

Sew the edges.

Parameters
[in]iEd0- The index of an edge.
[in]iEd1- The index of another edge.

◆ AddFacet()

virtual size_t MbPolymeshTopo::AddFacet ( const c3d::IndicesVector vertices)
pure virtual

Add a facet by given vertices.

Parameters
[in]vertices- Vertices.
Returns
Returns the index of a new facet.

◆ DeleteFacets()

virtual void MbPolymeshTopo::DeleteFacets ( const c3d::IndicesVector facets)
pure virtual

Delete facets.

Parameters
[in]facets- Facets to be deleted.

◆ FlipEdge()

virtual bool MbPolymeshTopo::FlipEdge ( size_t  iEd)
pure virtual

Flip an edge.

Parameters
[in]iEd- An edge to be flipped.
Returns
Returns true, if an edge is successfully flipped, and false otherwise.

◆ SplitEdge()

virtual size_t MbPolymeshTopo::SplitEdge ( size_t  iEd,
double  prm 
)
pure virtual

Split an edge at a ratio.

Parameters
[in]iEd- An edge to be split.
[in]prm- A ratio for the split. Has to be between 0 and 1.
Returns
Returns the index of a vertex created at the split point.

◆ SplitFacet()

virtual void MbPolymeshTopo::SplitFacet ( size_t  eVx0,
size_t  eVx1,
c3d::IndicesPair eNew 
)
pure virtual

Split a facet by creating an edge connecting its two given edges.

Parameters
[in]eVx0- The index of an edge.
[in]eVx1- The index of another edge.
[out]eNew- The indices of two created edges.

◆ JoinEdgeFacets()

virtual bool MbPolymeshTopo::JoinEdgeFacets ( size_t  iEd)
pure virtual

Join facets sharing a given edge.

Join facets sharing a given edge. An inverse operation to SplitFacet.

Parameters
[in]iEd- The index of an edge.
Returns
Returns true, if facets are successfully joined, and false otherwise.

◆ RemoveVertexValence2()

virtual bool MbPolymeshTopo::RemoveVertexValence2 ( size_t  iVx)
pure virtual

Remove the vertex of valence two and join the corresponding edges into one.

Parameters
[in]iVx- The index of a vertex.
Returns
Returns true, if a vertex is successfully deleted, and false otherwise.

◆ InsertVertexTriangle()

virtual size_t MbPolymeshTopo::InsertVertexTriangle ( size_t  iTr,
double  u,
double  v 
)
pure virtual

Insert a vertex into a triangle by baricentric coordinates.

Parameters
[in]iTr- The index of a triangle.
[in]u- The first baricentric coordinate.
[in]v- The second baricentric coordinate.
Returns
Returns the index of a created vertex.

◆ InsertVertexFacet()

virtual size_t MbPolymeshTopo::InsertVertexFacet ( const c3d::IndicesVector edgesSplit,
const std::array< size_t, 3 > &  edgesInterpolate,
double  u,
double  v 
)
pure virtual

Insert a vertex into a facet by baricentric coordinates.

Parameters
[in]edgesSplit- Edges, whose vertices are connected with a new vertex.
[in]edgesInterpolate- Edges, whose vertices are used for interpolation.
[in]u- The first baricentric coordinate.
[in]v- The second baricentric coordinate.
Returns
Returns the index of a created vertex.

◆ FindNearest()

virtual double MbPolymeshTopo::FindNearest ( const MbCartPoint3D pnt,
MbCartPoint3D pntProj,
size_t &  iFacet 
) const
pure virtual

Find the nearest point and return the distance to it.

Parameters
[in]pnt- A point.
[out]pntProj- The nearest point.
[out]iFacet- The index of a facet containing the nearest point.
Returns
Returns the distance to the nearest point.

◆ FindLineIntersection()

virtual bool MbPolymeshTopo::FindLineIntersection ( const MbAxis3D ray,
MbCartPoint3D pntCross,
double &  tRes,
size_t &  iFacet 
) const
pure virtual

Find the nearest point of intersection with a ray.

Parameters
[in]ray- A ray.
[out]pntCross- The nearest intersection point.
[out]tRes- The parameter of the ray in the intersection point.
[out]iFacet- The index of a facet intersecting with a ray.
Returns
Returns true, if the ray intersects a facet.

◆ TriangulateFacet()

virtual bool MbPolymeshTopo::TriangulateFacet ( size_t  iFacet)
pure virtual

Triangulate a given facet.

Parameters
[in]iFacet- The index of a facet being triangulated.
Returns
Returns true, if the triangulation is successful.

◆ GetPart()

virtual void MbPolymeshTopo::GetPart ( const c3d::IndicesVector facets,
MbPolymeshTopo part 
) const
pure virtual

Gather selected facets into a separate object.

Parameters
[in]facets- Facets forming a part.
[out]part- A separate object.

◆ GetRegion()

virtual void MbPolymeshTopo::GetRegion ( size_t  r,
c3d::IndicesVector facets 
) const
pure virtual

Get the indices of facets inside a region.

Parameters
[in]r- The index of a region.
[out]facets- The indices of facets.

◆ GetSubRegion()

virtual void MbPolymeshTopo::GetSubRegion ( size_t  iSub,
c3d::IndicesVector facets,
bool  bAdd = false 
) const
pure virtual

Get the indices of facets inside a subregion.

Parameters
[in]iSub- The index of a subregion.
[out]facets- The indices of facets.
[in]bAdd- Add to the end of the facet array.

◆ SplitByEdgesTopo()

virtual void MbPolymeshTopo::SplitByEdgesTopo ( const c3d::IndicesVector splitSet,
bool  bKeepRegions 
)
pure virtual

Split a segmentation by seleted edges.

Parameters
[in]splitSet- Edge set.
[in]bKeepRegions- Keep old regions (i.e. do not make separate regions from new subregions).

◆ RemoveTopoEdgesFromSegm()

virtual void MbPolymeshTopo::RemoveTopoEdgesFromSegm ( const c3d::IndicesVector edgesToDel)
pure virtual

Remove mesh edges from segmentation edges.

Parameters
[in]edgesToDel- Mesh edges to remove.

◆ RemoveSegmEdges()

virtual bool MbPolymeshTopo::RemoveSegmEdges ( const c3d::IndicesVector edgesToDel)
pure virtual

Segmentation edges to remove. Merges all regions connected through removed edges into one. This region has the ID of the original region with the largest area.

Parameters
[in]edgesToDel- Remove segmentation edges.

◆ MergeRegions()

virtual void MbPolymeshTopo::MergeRegions ( const c3d::IndicesVector regions,
bool  bRemoveValence2 
)
pure virtual

Merge several regions into one.

Parameters
[in]regions- Regions.
[in]bRemoveValence2- Remove vertices of valence two.

◆ UnsewSegmEdges()

virtual void MbPolymeshTopo::UnsewSegmEdges ( const c3d::IndicesVector edgesSegmToUnsew)
pure virtual

Unsew segmentation edges.

Parameters
[in]edgesSegmToUnsew- Segmentation edges.

◆ UnsewTopoEdges()

virtual void MbPolymeshTopo::UnsewTopoEdges ( const c3d::IndicesVector edgesTopoToUnsew)
pure virtual

Unsew topology edges.

Parameters
[in]edgesTopoToUnsew- Topology edges.

◆ SplitByFacetsTopo()

virtual void MbPolymeshTopo::SplitByFacetsTopo ( const c3d::IndicesVector splitSet,
bool  bMakeOneRegion,
bool  bKeepRegions 
)
pure virtual

Split a segmentation by a given facet set.

Parameters
[in]splitSet- Facet set.
[in]bMakeOneRegion- Unite all the given facets into a region.
[in]bKeepRegions- Keep old regions (i.e. do not make separate regions from new subregions).

◆ SplitSegmentationEdge()

virtual c3d::IndicesPair MbPolymeshTopo::SplitSegmentationEdge ( size_t  iEdSegm,
size_t  iEdTopo,
size_t  iVxSegmSplit = SYS_MAX_T 
)
pure virtual

Split a segmentation edge by a given mesh edge.

Parameters
[in]iEdSegm- A segmentation edge.
[in]iEdTopo- A mesh edge.
[in]iVxSegmSplit- The index of a segmentation vertex at the split point (will be added if is not given).
Returns
New segmentation edges, created during the split.

◆ NextLoopEdge()

virtual size_t MbPolymeshTopo::NextLoopEdge ( size_t  iEdSegm,
bool  bExcudeInner 
) const
pure virtual

Get the next segmentation edge in a loop.

Parameters
[in]iEdSegm- A segmentation edge.
[in]bExcudeInner- The flag of inner edges exclusion.
Returns
The index of the next segmentation edge in a loop.

◆ PrevLoopEdge()

virtual size_t MbPolymeshTopo::PrevLoopEdge ( size_t  iEdSegm,
bool  bExcudeInner 
) const
pure virtual

Get the previous segmentation edge in a loop.

Parameters
[in]iEdSegm- A segmentation edge.
[in]bExcudeInner- The flag of inner edges exclusion.
Returns
The index of the previous segmentation edge in a loop.

◆ GetRegionPointByParameter()

virtual bool MbPolymeshTopo::GetRegionPointByParameter ( size_t  iReg,
const MbCartPoint uv,
bool  bPercents,
MbCartPoint3D point 
) const
pure virtual

Get the region 3D point by the 2D parameter.

Parameters
[in]iReg- Region index.
[in]uv- 2D parameter. If bPercents parameter is true, then x and y must be within the unit interval.
[in]bPercents- Whether the parameter is given as a percentage.
[out]point- 3D point.
Returns
True if point exists, otherwise false (for example, if the mesh is not parameterized).

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