![]() |
Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
Public Member Functions | |
Face (Face *next) | |
Face () | |
~Face () | |
double | signed_volume () const |
Public Attributes | |
BSPTreePoly::EdgeUse * | usePtr |
BSPTreePoly::Face * | nextPtr |
Definition at line 156 of file BSPTreePoly.cpp.
moab::BSPTreePoly::Face::Face | ( | Face * | next | ) | [inline] |
Definition at line 158 of file BSPTreePoly.cpp.
: usePtr( 0 ), nextPtr( next )
#ifdef DEBUG_IDS
,
id( nextID++ )
#endif
{
}
moab::BSPTreePoly::Face::Face | ( | ) | [inline] |
Definition at line 166 of file BSPTreePoly.cpp.
: usePtr( 0 ), nextPtr( 0 )
#ifdef DEBUG_IDS
,
id( nextID++ )
#endif
{
}
Definition at line 374 of file BSPTreePoly.cpp.
{
BSPTreePoly::EdgeUse* nextEdgeUsePtr = usePtr;
while( nextEdgeUsePtr )
{
delete nextEdgeUsePtr; // This is tricky: ~EdgeUse() might change the value of usePtr
if( usePtr && usePtr != nextEdgeUsePtr )
nextEdgeUsePtr = usePtr;
else
nextEdgeUsePtr = 0;
}
usePtr = 0;
}
double moab::BSPTreePoly::Face::signed_volume | ( | ) | const |
Definition at line 486 of file BSPTreePoly.cpp.
References moab::BSPTreePoly::EdgeUse::nextPtr, and moab::sum().
{
CartVect sum( 0.0 );
const CartVect* base = usePtr->start();
CartVect d1 = ( *usePtr->end() - *base );
for( EdgeUse* coedge = usePtr->nextPtr; coedge != usePtr; coedge = coedge->nextPtr )
{
CartVect d2 = ( *coedge->end() - *base );
sum += d1 * d2;
d1 = d2;
}
return ( 1.0 / 6.0 ) * ( sum % *base );
}
Definition at line 176 of file BSPTreePoly.cpp.
Referenced by moab::BSPTreePoly::clear(), moab::BSPTreePoly::cut_polyhedron(), moab::BSPTreePoly::is_valid(), and moab::BSPTreePoly::volume().
Definition at line 175 of file BSPTreePoly.cpp.
Referenced by moab::BSPTreePoly::EdgeUse::EdgeUse(), moab::BSPTreePoly::get_vertices(), and moab::split_face().