#include <intersecting_faces.h>
Collaboration diagram for Intersecting_Faces:
Public Member Functions | |
vec_fp * | getIntersectingFacesRHS (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_Faces & | instance (void) |
Intersecting_Faces & Intersecting_Faces::instance | ( | void | ) | [static] |
Return the stored collection of faces that intersect the input Face.
[in] | face | Intersected face of interest. |
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.
[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. |
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.
[in] | detect_self | If true then only count intersections between faces of the same object. |
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.
[in] | cf | The current face. |
[in] | of | The other face. |
Check if pair of faces are parallel.
[in] | cf | The current face. |
[in] | of | The other face. |
Determine if an intersection between two faces is recorded in class.
[in] | lhs | Face pointer to use as key of intersecting faces table. |
[in] | rhs | Putative intersecting face of lhs face. |
bool Intersecting_Faces::faceIsIntersectedRHS | ( | Face const * const | face | ) | const |
Strongly determine if input face is recorded in class as being intersected.
[in] | face | Face of interest. |
bool Intersecting_Faces::findAndRecordNewFaceInt | ( | Face * const | face | ) |
Find and record all intersecting faces of input face.
[in] | face | Face of interest. |
bool Intersecting_Faces::vertAdjFacesHaveNewInt | ( | Vertex const * const | v | ) |
Check if any adjacent face of current vertex is intersected.
[in] | v | The current vertex. |
For a pair of faces, each edge of each face is checked for intersection with other face.
[in] | cf | The current face. |
[in] | of | The other face. |
bool Intersecting_Faces::detectNewFaceInts | ( | Face * const | face | ) |
Search for new face intersections with input face.
[in] | face | Face of interest. |
Check niceness of each collected vertex, and, if niceness changed, then add vertex to set of verticess requiring a full closest point search.
[out] | full_search_faces | The collection of vertices requiring full search. |
[in] | vertices | Collection of vertices whose niceness may have changed. |
Collect vertices whose niceness may have changed after vertex move due to face intersections.
[in] | v | The current vertex. |
Record an intersection between two faces.
[in] | lhs | Face pointer to use as key of intersecting faces table. |
[in] | rhs | Intersecting face of lhs face. |
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.
[in] | v | The current vertex. |
[in] | vertices | Collection of vertices whose niceness may have changed. |
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.
[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).
[in] | face | Face of interest. |
Remove record of intersection between input faces.
[in] | lhs | Face pointer to use as key of intersecting faces table. |
[in] | rhs | Intersecting face of lhs face that is to be removed. |
Calculate total force vector on current face due to intersection with other faces.
[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.
[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.
[in] | face | Face of interest. |
htff_cit Intersecting_Faces::begin | ( | void | ) | [inline] |
Get an iterator pointing to first intersecting face.
htff_cit Intersecting_Faces::end | ( | void | ) | [inline] |
Get an iterator pointing to one past the last intersecting face.