Intersecting_Faces Class Reference

#include <intersecting_faces.h>

Collaboration diagram for Intersecting_Faces:

Collaboration graph
[legend]
List of all members.

Public Member Functions

vec_fpgetIntersectingFacesRHS (Face const *const)
int getNumUniqueVerts (Face const *const, Face const *const, int *const) const
int getCountOfIntFaces (bool)
bool checkFaceEdgeInt (Face const *const, Face const *const) const
bool checkEdgeEdgeIntersection (Face const *const, Face const *const) const
bool facesParallel (Face const *const, Face const *const) const
bool facesCoplanar (Face const *const, Face const *const) const
bool faceIntersectsFace (Face const *const haystack, Face const *const needle)
bool faceIsIntersectedRHS (Face const *const) const
bool findAndRecordNewFaceInt (Face *const)
bool vertAdjFacesHaveNewInt (Vertex const *const)
bool checkFaceFaceInts (Face const *const, Face const *const) const
bool detectNewFaceInts (Face *const)
void getNiceSet (v_set &, hashset_v &)
hashset_v getNiceCheckSet (Vertex const *const)
void addFaceToFace (Face *const, Face const *const)
void removeOldIntersections (Vertex const *const, hashset_v &)
void updateNewIntersections (Vertex const *const, hashset_v &)
void findAllFaceIntersections (void)
void setFaceNotIntersectedLHS (Face const *const)
void removeFaceFromFaceInt (Face *const haystack, Face const *const needle)
void getFaceIntersectionForce (Face *const f, vector3 &total_force)
void getFaceFaceIntForce (Face *const lhs, Face *const rhs, vector3 &)
bool faceIsIntersectedLHS (Face const *const face) const
htff_cit begin (void)
htff_cit end (void)

Static Public Member Functions

static Intersecting_Facesinstance (void)

Member Function Documentation

Intersecting_Faces & Intersecting_Faces::instance ( void   )  [static]

vec_fp * Intersecting_Faces::getIntersectingFacesRHS ( Face const * const  face  ) 

Return the stored collection of faces that intersect the input Face.

Parameters:
[in] face Intersected face of interest.
Returns:
Pointer to collection of interecting faces of input face.

int Intersecting_Faces::getNumUniqueVerts ( Face const * const  cf,
Face const * const  of,
int * const  single_shared 
) const

Count number of unique vertices for pair of faces, and, if exactly one shared vertex, then identify shared vertex in each face.

Parameters:
[in] cf The current face.
[in] of The other face.
[out] single_shared If exactly one shared vertex, then save it's identity in each face.
Returns:
Number of unique vertices for pair of faces.

int Intersecting_Faces::getCountOfIntFaces ( bool  detect_self  ) 

Calculate and return the number of intersecting face pairs in model or only the number of intersecting pairs from faces of the same object.

Parameters:
[in] detect_self If true then only count intersections between faces of the same object.
Returns:
Count of pairs of intersecting faces.

bool Intersecting_Faces::checkFaceEdgeInt ( Face const *  const,
Face const *  const 
) const

bool Intersecting_Faces::checkEdgeEdgeIntersection ( Face const * const  cf,
Face const * const  of 
) const

For a pair of faces, each edge of each face is checked for intersection with an edge of the other face.

Parameters:
[in] cf The current face.
[in] of The other face.
Returns:
True if faces intersect, otherwise false.

bool Intersecting_Faces::facesParallel ( Face const * const  cf,
Face const * const  of 
) const

Check if pair of faces are parallel.

Parameters:
[in] cf The current face.
[in] of The other face.
Returns:
True if faces are parallel, otherwise false.

bool Intersecting_Faces::facesCoplanar ( Face const *  const,
Face const *  const 
) const

bool Intersecting_Faces::faceIntersectsFace ( Face const *const  lhs,
Face const *const  rhs 
)

Determine if an intersection between two faces is recorded in class.

Parameters:
[in] lhs Face pointer to use as key of intersecting faces table.
[in] rhs Putative intersecting face of lhs face.
Returns:
True if rhs is found in collection of intersecting faces for lhs (with note to the directionality of check); otherwise false.

bool Intersecting_Faces::faceIsIntersectedRHS ( Face const * const  face  )  const

Strongly determine if input face is recorded in class as being intersected.

Parameters:
[in] face Face of interest.
Returns:
True if face is used as key in intersecting faces container and has faces stored as intersecting.; otherwise false.

bool Intersecting_Faces::findAndRecordNewFaceInt ( Face * const  face  ) 

Find and record all intersecting faces of input face.

Parameters:
[in] face Face of interest.
Returns:
True if current face is intersected, false otherwise.

bool Intersecting_Faces::vertAdjFacesHaveNewInt ( Vertex const * const  v  ) 

Check if any adjacent face of current vertex is intersected.

Parameters:
[in] v The current vertex.
Returns:
True if any adjacent face of vertex is intersected, false otherwise.

bool Intersecting_Faces::checkFaceFaceInts ( Face const * const  cf,
Face const * const  of 
) const

For a pair of faces, each edge of each face is checked for intersection with other face.

Parameters:
[in] cf The current face.
[in] of The other face.
Returns:
True if faces intersect, otherwise false.

bool Intersecting_Faces::detectNewFaceInts ( Face * const  face  ) 

Search for new face intersections with input face.

Parameters:
[in] face Face of interest.
Returns:
True if new face intersections are detected; false otherwise.

void Intersecting_Faces::getNiceSet ( v_set full_search_faces,
hashset_v vertices 
)

Check niceness of each collected vertex, and, if niceness changed, then add vertex to set of verticess requiring a full closest point search.

Parameters:
[out] full_search_faces The collection of vertices requiring full search.
[in] vertices Collection of vertices whose niceness may have changed.

hashset_v Intersecting_Faces::getNiceCheckSet ( Vertex const * const  v  ) 

Collect vertices whose niceness may have changed after vertex move due to face intersections.

Parameters:
[in] v The current vertex.
Returns:
Collection of vertices whose niceness may have changed.

void Intersecting_Faces::addFaceToFace ( Face * const  lhs,
Face const * const  rhs 
)

Record an intersection between two faces.

Parameters:
[in] lhs Face pointer to use as key of intersecting faces table.
[in] rhs Intersecting face of lhs face.

void Intersecting_Faces::removeOldIntersections ( Vertex const * const  v,
hashset_v vertices 
)

Remove intersections of adjacent faces to current vertex from intersection list, and add all vertices of intersecting faces to set of vertices whose niceness may have changed.

Parameters:
[in] v The current vertex.
[in] vertices Collection of vertices whose niceness may have changed.

void Intersecting_Faces::updateNewIntersections ( Vertex const * const  v,
hashset_v vertices 
)

Check for face intersections of each adjacent face of current vertex, and add all vertices of intersecting faces to set of vertices whose niceness may have changed.

Parameters:
[in] v The current vertex.
[in] vertices Collection of vertices whose niceness may have changed.

void Intersecting_Faces::findAllFaceIntersections ( void   ) 

Find and record all face intersections.

void Intersecting_Faces::setFaceNotIntersectedLHS ( Face const * const  face  ) 

Remove records of intersections for input face (with note that search is not exhaustive).

Parameters:
[in] face Face of interest.

void Intersecting_Faces::removeFaceFromFaceInt ( Face *const   lhs,
Face const *const  rhs 
)

Remove record of intersection between input faces.

Parameters:
[in] lhs Face pointer to use as key of intersecting faces table.
[in] rhs Intersecting face of lhs face that is to be removed.

void Intersecting_Faces::getFaceIntersectionForce ( Face *const   face,
vector3 total_force 
)

Calculate total force vector on current face due to intersection with other faces.

Parameters:
[in] face The current face.
[out] total_force Intersection force is added to total_force.

void Intersecting_Faces::getFaceFaceIntForce ( Face *const   lhs,
Face *const   rhs,
vector3 total_force 
)

Calculate force vector on lhs face due to intersection with rhs face.

Parameters:
[in] lhs The current face.
[in] rhs The other face.
[out] total_force Intersection force is added to total_force.

bool Intersecting_Faces::faceIsIntersectedLHS ( Face const *const  face  )  const [inline]

Weakly determine if input face is recorded in class as being intersected.

Parameters:
[in] face Face of interest.
Returns:
True if face is used as key in intersecting faces container (with no further checks); otherwise false.

htff_cit Intersecting_Faces::begin ( void   )  [inline]

Get an iterator pointing to first intersecting face.

Returns:
Iterator pointing to beginning of intersecting faces container.

htff_cit Intersecting_Faces::end ( void   )  [inline]

Get an iterator pointing to one past the last intersecting face.

Returns:
Iterator pointing to one past the last intersecting face.


The documentation for this class was generated from the following files:
Generated on Fri Feb 13 13:58:40 2009 for meshmorph by  doxygen 1.5.1