#include <poly_Mesh.h>
Classes | |
class | EdgeIterator |
Iterator for edges. More... | |
class | QuadIterator |
Iterator for quads. More... | |
class | TriangleIterator |
Iterator for triangles. More... | |
class | VertexIterator |
Iterator for vertices. More... | |
Public Types | |
enum | PropsComputationDensity { OnePoint, ThreePoints } |
Precision of Gauss cubature formulas. More... | |
typedef std::map< poly_TriangleHandle, std::unordered_set< poly_TriangleHandle > > | t_adjacencyMx |
Adjacency matrix for triangles. | |
Public Member Functions | |
poly_Mesh (core_ProgressEntry progress=nullptr, core_PlotterEntry plotter=nullptr) | |
Default ctor with optional diagnostic tools. | |
t_ptr< poly_Mesh<> > | DeepCopyWithoutTraits () |
t_ptr< poly_Mesh > | DeepCopy () const |
t_ptr< poly_Mesh< ElemTraits > > | ExtractRegion (const std::unordered_set< int > &tids) const |
void | Merge (const t_ptr< poly_Mesh< ElemTraits > > &other) |
void | GrowRegion (const poly_TriangleHandle th, const t_adjacencyMx &mx, std::unordered_set< poly_TriangleHandle > ®ion) |
void | GrowRegion (const poly_TriangleHandle th, std::unordered_set< poly_TriangleHandle > ®ion) |
void | ComputeCComponents (std::vector< std::unordered_set< poly_TriangleHandle > > &ccomps) |
void | SetSurfAdapter (const t_ptr< poly_SurfAdapter > &adt) |
mobiusPoly_EXPORT bool | AreSelfIntersecting (const int tag, const poly_EdgeHandle eh0, const poly_EdgeHandle eh1) const |
mobiusPoly_EXPORT bool | AreSelfIntersecting (const int tag, const std::vector< poly_EdgeHandle > &ehs0, const std::vector< poly_EdgeHandle > &ehs1) const |
mobiusPoly_EXPORT bool | AreSelfIntersecting (const std::unordered_set< int > &domain) const |
void | GetBounds (double &xMin, double &xMax, double &yMin, double &yMax, double &zMin, double &zMax) const |
core_XYZ | ComputeCenter () const |
double | ComputeArea (const poly_VertexHandle hv0, const poly_VertexHandle hv1, const poly_VertexHandle hv2) const |
double | ComputeArea (const poly_TriangleHandle ht) const |
double | ComputeArea () |
void | ComputeProps (const PropsComputationDensity density, double &volume, core_XYZ &firstAxisOfInertia, core_XYZ &secondAxisOfInertia, core_XYZ &thirdAxisOfInertia) const |
bool | RefineByMidpoint (const poly_TriangleHandle ht, poly_TriangleHandle &ht0, poly_TriangleHandle &ht1, poly_TriangleHandle &ht2) |
bool | RefineByMidpoint (const poly_TriangleHandle ht) |
bool | RefineByMidedges (const poly_TriangleHandle ht, std::vector< poly_TriangleHandle > &hts) |
bool | RefineByMidedges (const poly_TriangleHandle ht) |
poly_VertexHandle | GetOppositeVertex (const poly_TriangleHandle ht, const poly_EdgeHandle he) const |
bool | ComputeNormal (const poly_VertexHandle hv0, const poly_VertexHandle hv1, const poly_VertexHandle hv2, t_xyz &norm) const |
void | ComputeCenter (const poly_VertexHandle hv0, const poly_VertexHandle hv1, const poly_VertexHandle hv2, t_xyz ¢er) const |
bool | ComputeNormal (const poly_TriangleHandle ht, t_xyz &norm) const |
double | ComputeScaledJacobian (const poly_TriangleHandle ht) const |
double | ComputeScaledJacobian (const t_xyz &v0, const t_xyz &v1, const t_xyz &v2) const |
double | ComputeMaxLen (const poly_TriangleHandle ht) const |
bool | IsDegenerated (const t_xyz &v0, const t_xyz &v1, const t_xyz &v2, const double prec) const |
bool | IsDegenerated (const poly_TriangleHandle ht, const double prec) const |
bool | Subdivide (const poly_TriangleHandle ht) |
void | ComputeEdges () |
void | ClearEdges () |
Cleans up the available edge info. | |
int | CountTriangles (const poly_EdgeHandle he) const |
bool | GetTriangles (const poly_EdgeHandle he, std::vector< poly_TriangleHandle > &hts) const |
bool | GetTriangles (const poly_EdgeHandle he, std::unordered_set< poly_TriangleHandle > &hts) const |
bool | FindAdjacentByEdges (const poly_TriangleHandle ht, std::vector< poly_TriangleHandle > &hts) const |
bool | FindAdjacentByEdges (const poly_TriangleHandle ht, std::unordered_set< poly_TriangleHandle > &hts) const |
void | FindAdjacent (const poly_VertexHandle hv, std::unordered_set< poly_TriangleHandle > &hts, const std::unordered_set< int > &domain=std::unordered_set< int >()) const |
void | FindAdjacent (const poly_VertexHandle hv, std::unordered_set< poly_VertexHandle > &hvs, bool &isBoundary, std::unordered_set< int > &faceRefs, const std::unordered_set< int > &domain) const |
bool | FindAdjacent (const poly_EdgeHandle he, std::vector< poly_TriangleHandle > &hts) const |
void | FindAdjacentByVertices (const poly_TriangleHandle ht, std::unordered_set< poly_TriangleHandle > &hts) const |
bool | CanFlip (const poly_EdgeHandle he, const double normDevRad, const double planeDevRad, const bool checkJacobian, const bool checkWing, poly_TriangleHandle &ht0, poly_TriangleHandle &ht1, poly_VertexHandle &a, poly_VertexHandle &b, poly_VertexHandle &x, poly_VertexHandle &y, t_xyz &norm0, t_xyz &norm1) const |
bool | CanFlip (const poly_EdgeHandle he, const double normDevRad=1./180.*M_PI, const double planeDevRad=15./180.*M_PI, const bool checkJacobian=true, const bool checkWing=true) const |
bool | FlipEdge (const poly_EdgeHandle he, const double normDevRad=1./180.*M_PI, const double planeDevRad=15./180.*M_PI, const bool checkJacobian=true, const bool checkWing=true) |
int | FlipEdges (const double normDevRad=1./180.*M_PI, const double planeDevRad=15./180.*M_PI) |
poly_EdgeHandle | FindEdge (const poly_Edge &e) const |
poly_EdgeHandle | FindEdge (const poly_VertexHandle &hv0, const poly_VertexHandle &hv1) const |
poly_EdgeHandle | FindEdge (const poly_TriangleHandle ht0, const poly_TriangleHandle ht1) const |
void | FindBoundaryEdges (std::vector< poly_EdgeHandle > &bndEdges, std::vector< poly_TriangleHandle > &bndTris) const |
void | FindDomainEdges (const int domainId, std::vector< poly_EdgeHandle > &innerEdges, std::vector< poly_EdgeHandle > &bndEdges) const |
poly_VertexHandle | FindVertex (const poly_TriangleHandle ht, const poly_EdgeHandle he, int &vidx) const |
bool | CollapseEdge (const poly_EdgeHandle he, const bool checkBorderOn=true, const bool checkDegenOn=true, const double prec=core_Precision::Resolution3D(), const std::unordered_set< int > &domain=std::unordered_set< int >()) |
bool | SplitEdge (const poly_EdgeHandle he) |
void | Smooth (const int iter, const int tag, const bool checkInter) |
void | Smooth (const int iter=1, const std::unordered_set< int > &domain=std::unordered_set< int >(), const bool checkInter=false) |
bool | GetVertex (const poly_VertexHandle h, poly_Vertex &vertex) const |
bool | GetVertex (const poly_VertexHandle h, t_xyz &vertex) const |
poly_Vertex & | ChangeVertex (const poly_VertexHandle h) |
bool | GetEdge (const poly_EdgeHandle h, poly_Edge &edge) const |
bool | GetTriangle (const poly_TriangleHandle h, poly_Triangle< ElemTraits > &triangle) const |
poly_Triangle< ElemTraits > & | ChangeTriangle (const poly_TriangleHandle h) |
bool | GetQuad (const poly_QuadHandle h, poly_Quad &quad) const |
poly_VertexHandle | AddVertex () |
poly_VertexHandle | AddVertex (const double x, const double y, const double z) |
poly_VertexHandle | AddVertex (const core_XYZ &coords) |
poly_EdgeHandle | AddEdge () |
poly_EdgeHandle | AddEdge (const poly_VertexHandle hStartV, const poly_VertexHandle hFinishV) |
poly_EdgeHandle | AddEdge (const poly_Edge &edge) |
bool | RemoveEdge (const poly_EdgeHandle h) |
poly_TriangleHandle | AddTriangle () |
poly_TriangleHandle | AddTriangle (const poly_VertexHandle hV0, const poly_VertexHandle hV1, const poly_VertexHandle hV2) |
poly_TriangleHandle | AddTriangle (const poly_VertexHandle hV0, const poly_VertexHandle hV1, const poly_VertexHandle hV2, const int ref) |
bool | RemoveTriangle (const poly_TriangleHandle h) |
poly_QuadHandle | AddQuad () |
poly_QuadHandle | AddQuad (const poly_VertexHandle hV0, const poly_VertexHandle hV1, const poly_VertexHandle hV2, const poly_VertexHandle hV3) |
int | GetNumVertices () const |
int | GetNumEdges () const |
int | GetNumTriangles (const bool includeDeads=false) const |
int | GetNumQuads () const |
Public Member Functions inherited from mobius::core_IAlgorithm | |
core_ProgressEntry & | GetProgress () const |
core_PlotterEntry & | GetPlotter () const |
void | SetStatusCode (const int status) |
int | GetStatusCode () const |
void | AddStatusCode (const int statBit) |
bool | HasStatusCode (const int statBit) const |
Public Member Functions inherited from mobius::core_OBJECT | |
mobiusCore_EXPORT void | IncRef () |
mobiusCore_EXPORT void | DecRef () |
mobiusCore_EXPORT int | NbRefs () const |
virtual mobiusCore_EXPORT void | Dump (std::ostream *out) const |
const mobiusCore_EXPORT std::string & | GetName () const |
mobiusCore_EXPORT void | SetName (const std::string &name) |
mobiusCore_EXPORT bool | HasName () const |
Public Attributes | |
std::vector< poly_Vertex > | __vertices |
List of vertices. | |
std::vector< poly_Edge > | __edges |
List of edges. | |
std::vector< poly_Triangle< ElemTraits > > | __triangles |
List of triangles. | |
std::vector< poly_Quad > | __quads |
List of quads. | |
std::unordered_map< poly_EdgeHandle, std::vector< poly_TriangleHandle > > | __links |
Edges-to-triangles map. | |
t_ptr< poly_SurfAdapter > | __surfAdt |
CAD surface adapter. | |
Protected Member Functions | |
void | updateLink (const poly_EdgeHandle he, const poly_TriangleHandle htOld, const poly_TriangleHandle htNew) |
Updates the existing link by exchanging htOld with htNew . | |
Protected Member Functions inherited from mobius::core_IAlgorithm | |
mobiusCore_EXPORT | core_IAlgorithm (core_ProgressEntry progress, core_PlotterEntry plotter) |
Additional Inherited Members | |
Protected Attributes inherited from mobius::core_IAlgorithm | |
core_ProgressEntry | m_progress |
Progress Notifier. | |
core_PlotterEntry | m_plotter |
Imperative Plotter. | |
int | m_iStatusCode |
Data structure representing surface triangulation.
enum mobius::poly_Mesh::PropsComputationDensity |
Precision of Gauss cubature formulas.
|
inline |
Creates a new invalid edge.
|
inline |
Adds the passed edge to the mesh.
|
inline |
Creates a new edge between the passed two vertices.
[in] | hStartV | start vertex. |
[in] | hFinishV | finish vertex. |
|
inline |
Creates a new invalid quad.
|
inline |
Creates a new quad.
[in] | hV0 | 1-st vertex. |
[in] | hV1 | 2-nd vertex. |
[in] | hV2 | 3-rd vertex. |
[in] | hV3 | 4-th vertex. |
|
inline |
Creates a new invalid triangle.
|
inline |
Creates a new triangle.
[in] | hV0 | 1-st vertex. |
[in] | hV1 | 2-nd vertex. |
[in] | hV2 | 3-rd vertex. |
|
inline |
Creates a new triangle with a back reference to a CAD face.
[in] | hV0 | 1-st vertex. |
[in] | hV1 | 2-nd vertex. |
[in] | hV2 | 3-rd vertex. |
[in] | ref | back-reference index. |
|
inline |
Creates a new vertex and returns its handle.
|
inline |
Creates a new vertex and returns its handle.
[in] | coords | coordinates of the vertex. |
|
inline |
Creates a new vertex with the given coordinates and returns its handle.
[in] | x | coordinate x of the vertex. |
[in] | y | coordinate y of the vertex. |
[in] | z | coordinate z of the vertex. |
mobiusPoly_EXPORT bool mobius::poly_Mesh< ElemTraits >::AreSelfIntersecting | ( | const int | tag, |
const poly_EdgeHandle | eh0, | ||
const poly_EdgeHandle | eh1 | ||
) | const |
Checks if the passed edges intersect in the parametric domain of the corresponding surface.
[in] | tag | the domain ID. |
[in] | eh0 | the first edge to check. |
[in] | eh1 | the second edge to check. |
mobiusPoly_EXPORT bool mobius::poly_Mesh< ElemTraits >::AreSelfIntersecting | ( | const int | tag, |
const std::vector< poly_EdgeHandle > & | ehs0, | ||
const std::vector< poly_EdgeHandle > & | ehs1 | ||
) | const |
Checks if the passed edges intersect in the parametric domain of the corresponding surface.
[in] | tag | the domain ID. |
[in] | ehs0 | the first group of edges to check. |
[in] | ehs1 | the second group of edges to check. |
mobiusPoly_EXPORT bool mobius::poly_Mesh< ElemTraits >::AreSelfIntersecting | ( | const std::unordered_set< int > & | domain | ) | const |
Checks if the boundary and inner edges intersect in the passed domain.
[in] | domain | the domain to check. |
|
inline |
Checks if the passed edge can be flipped and returns the pair of triangles to flip. The links should have been computed before you call this method.
[in] | he | the edge to check. |
[in] | normDevRad | the allowed absolute normal deviation (radians). |
[in] | planeDevRad | the allowed in-plane deviation (radians). |
[in] | checkJacobian | the Boolean flag determining whether to check mesh quality metric (scaled Jacobian) on edge flip to ensure that flipping does not make the mesh worse. |
[in] | checkWing | the Boolean flag indicating whether to check the projection of the neighbor links to the edge supposed for flipping. If the dot product is negative, that's a "wing-like" shape that should not undergo edge flipping to avoid overlappings. |
[out] | ht0 | the first triangle. |
[out] | ht1 | the second triangle. |
[out] | a | the opposite vertex on the first triangle. |
[out] | b | the opposite vertex on the second triangle. |
[out] | x | the first vertex on the edge to flip. |
[out] | y | the second vertex on the edge to flip. |
[out] | norm0 | the normal vector for the first triangle. |
[out] | norm1 | the normal vector for the second triangle. |
|
inline |
Checks if the passed edge can be flipped. The links should have been computed before you call this method.
[in] | he | the edge to check. |
[in] | normDevRad | the allowed absolute normal deviation (radians). |
[in] | planeDevRad | the allowed in-plane deviation (radians). |
[in] | checkJacobian | the Boolean flag determining whether to check mesh quality metric (scaled Jacobian) on edge flip to ensure that flipping does not make the mesh worse. |
[in] | checkWing | the Boolean flag indicating whether to check the projection of the neighbor links to the edge supposed for flipping. If the dot product is negative, that's a "wing-like" shape that should not undergo edge flipping to avoid overlappings. |
|
inline |
Returns non-const reference to a triangle by its handle. You have to be sure that such a triangle exists.
[in] | h | handle of a triangle to access. |
|
inline |
Returns non-const reference to a vertex by its handle. You have to be sure that such a vertex exists.
[in] | h | handle of a vertex to access. |
|
inline |
Collapses the passed edge.
[in] | he | the edge to collapse. |
[in] | checkBorderOn | the Boolean flag indicating whether to check borders on edge collapse. |
[in] | checkDegenOn | the Boolean flag indicating whether to check degeneracy of the resulting triangles. |
[in] | prec | the precision to use for the degenracy check, if it is enabled. |
[in] | domain | the optional CAD domain (a set of face IDs) to restrict edge collapse in. |
|
inline |
Calculates area.
|
inline |
Computes area for the passed triangle.
[in] | ht | handle of the triangle to compute the area for. |
|
inline |
Computes area for the passed triangle.
[in] | hv0 | the first vertex handle. |
[in] | hv1 | the second vertex handle. |
[in] | hv2 | the third vertex handle. |
|
inline |
Computes connected components for the mesh.
[out] | ccomps | the computed connected components as a vector of regions. |
|
inline |
Calculates barycenter.
|
inline |
Computes center for the passed triple of vertices.
[in] | hv0 | the first vertex handle. |
[in] | hv1 | the second vertex handle. |
[in] | hv2 | the third vertex handle. |
[out] | center | the computed center point. |
|
inline |
Computes connectivity information as a set of mesh links married to the elements they share.
|
inline |
Computes the max length for the edges of the passed triangle.
[in] | ht | handle of the triangle to compute the max length for. |
|
inline |
Computes normal vector for the triangle in question.
[in] | ht | handle of the triangle in question. |
[out] | norm | computed normal vector. |
|
inline |
Computes normal vector for the passed triple of vertices.
[in] | hv0 | the first vertex handle. |
[in] | hv1 | the second vertex handle. |
[in] | hv2 | the third vertex handle. |
[out] | norm | the computed normal vector. |
|
inline |
Computes general properties (volume and axes of inertia) for the mesh. Calculation of volume properties is performed by numerical integration over triangle surfaces using Gauss cubature formulas.
[in] | density | the precision of calculations. |
[out] | volume | the computed volume. |
[out] | firstAxisOfInertia | the first axis of inertia. |
[out] | secondAxisOfInertia | the second axis of inertia. |
[out] | thirdAxisOfInertia | the third axis of inertia. |
|
inline |
Computes the min scaled Jacobian for the passed triangle.
[in] | ht | handle of the triangle to compute the metric for. |
|
inline |
Computes the min scaled Jacobian for the passed triangle nodes.
[in] | v0 | the 0-th vertex coordinates. |
[in] | v1 | the 1-st vertex coordinates. |
[in] | v2 | the 2-nd vertex coordinates. |
|
inline |
Returns the number of triangles sharing the passed edge.
[in] | he | the edge handle to check. |
|
inline |
Creates a deep copy of this mesh.
|
inline |
Creates a deep copy of this mesh without traits.
|
inline |
Extracts a mesh region for the given triangle IDs tids
. Use this method to get a submesh of the existing mesh. The constructed submesh is a deep copy.
[in] | tids | the IDs of the triangles to copy into the region mesh being constructed. |
|
inline |
Finds adjacent triangles for the given edge.
[in] | he | the edge in question. |
[out] | hts | the output triangles. |
|
inline |
Finds all triangles sharing the given vertex.
[in] | hv | the vertex in question. |
[out] | hts | the found triangles. |
[in] | domain | the optional domain to keep only the faces of interest. |
|
inline |
Finds all vertices adjacent to the given vertex.
[in] | hv | the vertex in question. |
[out] | hvs | the found neighbor vertices. |
[out] | isBoundary | the Boolean flag indicating whether the passed hv vertex is found to be the boundary one. |
[out] | faceRefs | the surrounding face refs. |
[in] | domain | the optional domain to keep only the faces of interest. |
|
inline |
Finds adjacent triangles for the given one.
[in] | ht | the triangle in question. |
[out] | hts | the output triangles. |
|
inline |
Finds adjacent triangles for the given one.
[in] | ht | the triangle in question. |
[out] | hts | the output triangles. |
|
inline |
Finds adjacent triangles for the given one.
[in] | ht | the triangle in question. |
[out] | hts | the output triangles. |
|
inline |
Finds all boundary edges in the mesh. A boundary edge is an edge where the triangles with different face IDs
meet or an edge not having exactly two owner triangles.
[out] | bndEdges | the extracted boundary edges. |
[out] | bndTris | the extracted boundary triangles. |
|
inline |
Returns all edges that belong to the specified domain.
[in] | domainId | the domain of interest. |
[out] | innerEdges | the extracted inner edges. |
[out] | bndEdges | the extracted boundary edges. |
|
inline |
Finds the given edge in the collection of precomputed links.
[in] | e | the edge to find. |
|
inline |
Returns the common edge for the passed pair of triangles.
[in] | ht0 | the first triangle. |
[in] | ht1 | the second triangle. |
|
inline |
Finds an edge defined by the passed vertex handles (order does not matter) in the collection of precomputed links.
[in] | hv0 | the first vertex of the edge to find. |
[in] | hv1 | the second vertex of the edge to find. |
|
inline |
Finds the vertex shared between the passed triangle and the given (presumably dangling) edge.
[in] | ht | the triangle in question. |
[in] | he | the edge that presumably shares a single vertex the triangle ht . |
[out] | vidx | the index of the common vertex in range [0,2]. |
|
inline |
Flips the passed edge if it allows flipping.
[in] | he | the edge to flip. |
[in] | normDevRad | the allowed absolute normal deviation (radians). |
[in] | planeDevRad | the allowed in-plane deviation (radians). |
[in] | checkJacobian | the Boolean flag determining whether to check mesh quality metric (scaled Jacobian) on edge flip to ensure that flipping does not make the mesh worse. |
[in] | checkWing | the Boolean flag indicating whether to check the projection of the neighbor links to the edge supposed for flipping. If the dot product is negative, that's a "wing-like" shape that should not undergo edge flipping to avoid overlappings. |
|
inline |
Flips all edges that allow flipping.
[in] | normDevRad | the allowed absolute normal deviation (radians). |
[in] | planeDevRad | the allowed in-plane deviation (radians). |
|
inline |
Calculates axis-aligned boundary box for the mesh.
[out] | xMin | min X. |
[out] | xMax | max X. |
[out] | yMin | min Y. |
[out] | yMax | max Y. |
[out] | zMin | min Z. |
[out] | zMax | max Z. |
|
inline |
Returns edge by its handle.
[in] | h | handle of an edge to access. |
[out] | edge | edge. |
|
inline |
|
inline |
|
inline |
Returns the number of triangles.
[in] | includeDeads | whether to include dead ones. |
|
inline |
|
inline |
Returns the opposite vertex for the given edge on the passed triangle.
[in] | ht | triangle handle. |
[in] | he | edge handle. |
|
inline |
Returns quad by its handle.
[in] | h | handle of a quad to access. |
[out] | quad | quad. |
|
inline |
Returns triangle by its handle.
[in] | h | handle of a triangle to access. |
[out] | triangle | triangle. |
|
inline |
Returns handles of the triangles sharing the passed edge.
[in] | he | the edge handle to check. |
[out] | hts | the output triangles. |
|
inline |
Returns handles of the triangles sharing the passed edge.
[in] | he | the edge handle to check. |
[out] | hts | the output triangles. |
|
inline |
Returns vertex by its handle.
[in] | h | handle of a vertex to access. |
[out] | vertex | vertex. |
|
inline |
Returns vertex by its handle as a coordinate triple.
[in] | h | handle of a vertex to access. |
[out] | vertex | vertex. |
|
inline |
Grows a mesh region by connectivity starting from the passed triangle handle th
.
[in] | th | the seed triangle handle. |
[in] | mx | the precomputed adjacency matrix. |
[out] | region | the collected region. |
|
inline |
Grows a mesh region by connectivity starting from the passed triangle handle th
.
[in] | th | the seed triangle handle. |
[out] | region | the collected region. |
|
inline |
Checks if the passed triangle is degenerated w.r.t. the given precision value.
[in] | ht | the triangle to check. |
[in] | prec | the precision to use. |
|
inline |
Checks if the passed triangle is degenerated w.r.t. the given precision value.
[in] | v0 | the 0-th vertex of the triangle to check. |
[in] | v1 | the 1-st vertex of the triangle to check. |
[in] | v2 | the 2-nd vertex of the triangle to check. |
[in] | prec | the precision to use. |
|
inline |
Copies other mesh into this.
[in] | other | the mesh to copy into this mesh |
|
inline |
Refines the passed triangle by midedge subdivision.
[in] | ht | handle of the triangle to refine. |
|
inline |
Refines the passed triangle by midedge subdivision.
[in] | ht | handle of the triangle to refine. |
[out] | hts | newly constructed triangles. |
|
inline |
Refines the triangle of interest by its midpoint.
[in] | ht | handle of the triangle to refine. |
|
inline |
Refines the triangle of interest by its midpoint.
[in] | ht | handle of the triangle to refine. |
[out] | ht0 | handle of the first created triangle. |
[out] | ht1 | handle of the second created triangle. |
[out] | ht2 | handle of the third created triangle. |
|
inline |
Removes the edge with the given handle.
[in] | h | handle of the edge to remove. |
|
inline |
Removes the triangle with the given handle.
[in] | h | handle of the triangle to remove. |
|
inline |
Sets CAD surface adapter to establish a reference from the discrete surface to the smooth analytical surface (if any).
[in] | adt | the adapter to set. |
|
inline |
Applies Laplacian smoothing to the mesh vertices.
[in] | iter | the number of smoothing steps. |
[in] | tag | the subdomain ID to smooth. |
[in] | checkInter | the Boolean flag indicating whether to check for self-intersecting links. |
|
inline |
Applies Laplacian smoothing to the mesh vertices.
[in] | iter | the number of smoothing steps. |
[in] | domain | the optional face IDs to smooth. |
[in] | checkInter | the Boolean flag indicating whether to check for self-intersecting links. |
|
inline |
Splits the passed edge and refines its owner triangles.
[in] | he | the edge to split. |
|
inline |
Creates a submesh for the given triangle by subdividing it at the center points. WARNING: the resulting mesh is not conformal!
[in] | ht | the triangle to subdivide. |