![]() |
Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
Public Member Functions | |
EdgeUse (Edge *edge) | |
EdgeUse (Edge *edge, Face *face) | |
~EdgeUse () | |
BSPTreePoly::Vertex * | start () const |
BSPTreePoly::Vertex * | end () const |
int | sense () const |
void | insert_after (BSPTreePoly::EdgeUse *prev) |
void | insert_before (BSPTreePoly::EdgeUse *next) |
Public Attributes | |
BSPTreePoly::EdgeUse * | prevPtr |
BSPTreePoly::EdgeUse * | nextPtr |
BSPTreePoly::Edge * | edgePtr |
BSPTreePoly::Face * | facePtr |
Definition at line 46 of file BSPTreePoly.cpp.
Definition at line 264 of file BSPTreePoly.cpp.
: prevPtr( 0 ), nextPtr( 0 ), edgePtr( edge ), facePtr( 0 ) {}
moab::BSPTreePoly::EdgeUse::EdgeUse | ( | BSPTreePoly::Edge * | edge, |
BSPTreePoly::Face * | face | ||
) |
Definition at line 266 of file BSPTreePoly.cpp.
References nextPtr, prevPtr, and moab::BSPTreePoly::Face::usePtr.
: edgePtr( edge ), facePtr( face )
{
assert( !face->usePtr );
face->usePtr = prevPtr = nextPtr = this;
if( !face->usePtr )
{
face->usePtr = prevPtr = nextPtr = this;
return;
}
nextPtr = face->usePtr;
prevPtr = nextPtr->prevPtr;
assert( prevPtr->nextPtr == nextPtr );
nextPtr->prevPtr = this;
prevPtr->nextPtr = this;
}
Definition at line 312 of file BSPTreePoly.cpp.
{
if( facePtr->usePtr == this ) facePtr->usePtr = ( nextPtr == this ) ? 0 : nextPtr;
if( edgePtr->forwardPtr == this ) edgePtr->forwardPtr = 0;
if( edgePtr->reversePtr == this ) edgePtr->reversePtr = 0;
if( !edgePtr->forwardPtr && !edgePtr->reversePtr ) delete edgePtr;
nextPtr->prevPtr = prevPtr;
prevPtr->nextPtr = nextPtr;
nextPtr = prevPtr = 0;
}
BSPTreePoly::Vertex * moab::BSPTreePoly::EdgeUse::end | ( | ) | const [inline] |
Definition at line 346 of file BSPTreePoly.cpp.
Referenced by moab::BSPTreePoly::cut_polyhedron(), moab::BSPTreePoly::get_vertices(), insert_after(), moab::BSPTreePoly::is_valid(), and moab::split_face().
{
if( edgePtr->forwardPtr == this )
return edgePtr->end();
else if( edgePtr->reversePtr == this )
return edgePtr->start();
else
return 0;
}
void moab::BSPTreePoly::EdgeUse::insert_after | ( | BSPTreePoly::EdgeUse * | prev | ) |
Definition at line 284 of file BSPTreePoly.cpp.
References end(), facePtr, nextPtr, and prevPtr.
Referenced by moab::BSPTreePoly::cut_polyhedron(), moab::BSPTreePoly::set(), and moab::split_edge().
{
// shouldn't already be in a face
assert( !facePtr );
// adjacent edges should share vertices
assert( start() == prev->end() );
facePtr = prev->facePtr;
nextPtr = prev->nextPtr;
prevPtr = prev;
nextPtr->prevPtr = this;
prevPtr->nextPtr = this;
}
void moab::BSPTreePoly::EdgeUse::insert_before | ( | BSPTreePoly::EdgeUse * | next | ) |
Definition at line 298 of file BSPTreePoly.cpp.
References facePtr, nextPtr, prevPtr, and start().
Referenced by moab::split_edge().
{
// shouldn't already be in a face
assert( !facePtr );
// adjacent edges should share vertices
assert( end() == next->start() );
facePtr = next->facePtr;
prevPtr = next->prevPtr;
nextPtr = next;
nextPtr->prevPtr = this;
prevPtr->nextPtr = this;
}
int moab::BSPTreePoly::EdgeUse::sense | ( | ) | const |
Definition at line 326 of file BSPTreePoly.cpp.
{
if( edgePtr->forwardPtr == this )
return 1;
else if( edgePtr->reversePtr == this )
return -1;
else
return 0;
}
BSPTreePoly::Vertex * moab::BSPTreePoly::EdgeUse::start | ( | ) | const [inline] |
Definition at line 336 of file BSPTreePoly.cpp.
Referenced by moab::BSPTreePoly::cut_polyhedron(), insert_before(), moab::BSPTreePoly::is_valid(), and moab::split_face().
{
if( edgePtr->forwardPtr == this )
return edgePtr->start();
else if( edgePtr->reversePtr == this )
return edgePtr->end();
else
return 0;
}
Definition at line 53 of file BSPTreePoly.cpp.
Referenced by moab::BSPTreePoly::cut_polyhedron(), moab::BSPTreePoly::is_valid(), and moab::BSPTreePoly::set_vertex_marks().
Definition at line 54 of file BSPTreePoly.cpp.
Referenced by moab::BSPTreePoly::Edge::forward(), insert_after(), insert_before(), moab::BSPTreePoly::is_valid(), moab::BSPTreePoly::Edge::reverse(), moab::split_face(), and moab::BSPTreePoly::Edge::use().
Definition at line 52 of file BSPTreePoly.cpp.
Referenced by moab::BSPTreePoly::cut_polyhedron(), EdgeUse(), moab::BSPTreePoly::get_vertices(), insert_after(), insert_before(), moab::BSPTreePoly::is_valid(), moab::BSPTreePoly::set_vertex_marks(), moab::BSPTreePoly::Face::signed_volume(), and moab::split_face().
Definition at line 52 of file BSPTreePoly.cpp.
Referenced by EdgeUse(), insert_after(), insert_before(), moab::BSPTreePoly::is_valid(), and moab::split_face().