Public Types | Public Member Functions | Private Member Functions | Private Attributes
triSurfaceClassifyEdges Class Reference
Collaboration diagram for triSurfaceClassifyEdges:
Collaboration graph
[legend]

Public Types

enum  edgeType_ {
  NONE = 0, CONVEXEDGE = 1, CONCAVEEDGE = 2, FLATSURFACEEDGE = 4,
  FEATUREEDGE = 8
}
 

Public Member Functions

 triSurfaceClassifyEdges (const meshOctree &octree)
 Construct from octree. More...
 
 ~triSurfaceClassifyEdges ()
 
direction edgeType (const label edgeI) const
 return the edge type according to the above enumerator More...
 
const List< direction > & edgeTypes () const
 return the list of edge classification More...
 

Private Member Functions

void checkOrientation ()
 check the orientation of the patches in the triangulated surface More...
 
void classifyEdgesTypes ()
 classify edges based on the orientation of the surface facets More...
 
 triSurfaceClassifyEdges (const triSurfaceClassifyEdges &)
 Disallow default bitwise copy construct. More...
 
void operator= (const triSurfaceClassifyEdges &)
 Disallow default bitwise assignment. More...
 

Private Attributes

const meshOctreeoctree_
 reference to meshOctree More...
 
List< directionedgeTypes_
 flags for surface edges More...
 
List< directionfacetOrientation_
 orientation of facet's normal (0 - unknown, 1- outward, 2- inward) More...
 

Detailed Description

Definition at line 55 of file triSurfaceClassifyEdges.H.

Member Enumeration Documentation

◆ edgeType_

enum edgeType_
Enumerator
NONE 
CONVEXEDGE 
CONCAVEEDGE 
FLATSURFACEEDGE 
FEATUREEDGE 

Definition at line 84 of file triSurfaceClassifyEdges.H.

Constructor & Destructor Documentation

◆ triSurfaceClassifyEdges() [1/2]

Disallow default bitwise copy construct.

◆ triSurfaceClassifyEdges() [2/2]

triSurfaceClassifyEdges ( const meshOctree octree)

Construct from octree.

Definition at line 41 of file triSurfaceClassifyEdges.C.

References Foam::triSurfaceChecks::checkOrientation().

Here is the call graph for this function:

◆ ~triSurfaceClassifyEdges()

Definition at line 54 of file triSurfaceClassifyEdges.C.

Member Function Documentation

◆ checkOrientation()

void checkOrientation ( )
private

check the orientation of the patches in the triangulated surface

sort all surface facets into groups consisting of facets with consistent orientation. Do not cross non-manifold edges

check the orientation of triangles at this edge check the sign of the angle if the orientation is not consistent

find the octree leaves containing each triangle

check the orientation of all facets in a group and collect their votes

find the OUTSIDE octree cubes in the vicinity of the triangle and check the orientation of the triangle

check whether the ray casted from the centre of the triangle intersects the cube

found an intersection in the positive direction

found an intersection in the negative direction

determine whether a group is oriented outward or inward

Finally, set the orientation of the normal

Definition at line 46 of file triSurfaceClassifyEdgesFunctions.C.

References LongList< T, Offset >::append(), DynList< T, staticSize >::append(), Foam::help::boundBoxLineIntersection(), Foam::constant::universal::c, triFace::centre(), DynList< T, staticSize >::clear(), meshOctree::containedTriangles(), meshOctreeCubeCoordinates::cubeBox(), meshOctreeCubeBasic::cubeType(), triSurfAddressing::edgeFacets(), Foam::endl(), triSurfAddressing::facetEdges(), triSurfaceClassifyEdges::facetOrientation_, meshOctree::findAllLeafNeighbours(), Pair::first(), forAll, forAllRow, Foam::Info, Foam::mag(), n, triFace::normal(), meshOctree::numberOfLeaves(), triSurfaceClassifyEdges::octree_, meshOctreeCubeBasic::OUTSIDE, pMin(), points, triSurfPoints::points(), LongList< T, Offset >::removeLastElement(), meshOctree::returnLeaf(), meshOctree::rootBox(), Pair::second(), VRWGraph::setRowSize(), DynList< T, staticSize >::setSize(), List::setSize(), triSurfFacets::size(), LongList< T, Offset >::size(), DynList< T, staticSize >::size(), meshOctreeCubeCoordinates::size(), VRWGraph::sizeOfRow(), and meshOctree::surface().

Here is the call graph for this function:

◆ classifyEdgesTypes()

void classifyEdgesTypes ( )
private

classify edges based on the orientation of the surface facets

set feature edge types

Finally, check the edges and assign flags

this is not a manifold edge

surface is a manifold at this edge

facet is outward oriented

this is a convex edge

this is a concave edge

facet is inward oriented

this is a convex edge

this is a concave edge

Definition at line 276 of file triSurfaceClassifyEdgesFunctions.C.

References triSurfaceClassifyEdges::CONCAVEEDGE, triSurfaceClassifyEdges::CONVEXEDGE, Foam::e, triSurfAddressing::edgeFacets(), triSurfAddressing::edges(), triSurfaceClassifyEdges::edgeTypes_, f1, triSurfaceClassifyEdges::facetOrientation_, triSurfaceClassifyEdges::FEATUREEDGE, triSurfFeatureEdges::featureEdges(), triSurfaceClassifyEdges::FLATSURFACEEDGE, forAll, forAllRow, found, tetrahedron::mag(), triSurfaceClassifyEdges::NONE, triSurfaceClassifyEdges::octree_, triSurfAddressing::pointEdges(), points, triSurfPoints::points(), labelledTri::region(), List::setSize(), VRWGraph::size(), VRWGraph::sizeOfRow(), and meshOctree::surface().

Here is the call graph for this function:

◆ operator=()

void operator= ( const triSurfaceClassifyEdges )
private

Disallow default bitwise assignment.

◆ edgeType()

direction edgeType ( const label  edgeI) const
inline

return the edge type according to the above enumerator

Definition at line 106 of file triSurfaceClassifyEdges.H.

References triSurfaceClassifyEdges::edgeTypes_.

◆ edgeTypes()

const List< direction > & edgeTypes ( ) const

return the list of edge classification

Definition at line 59 of file triSurfaceClassifyEdges.C.

References triSurfaceClassifyEdges::edgeTypes_.

Referenced by edgeExtractor::checkConcaveEdgeCells().

Here is the caller graph for this function:

Field Documentation

◆ octree_

const meshOctree& octree_
private

◆ edgeTypes_

List<direction> edgeTypes_
private

◆ facetOrientation_

List<direction> facetOrientation_
private

orientation of facet's normal (0 - unknown, 1- outward, 2- inward)

Definition at line 65 of file triSurfaceClassifyEdges.H.

Referenced by triSurfaceClassifyEdges::checkOrientation(), and triSurfaceClassifyEdges::classifyEdgesTypes().


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