|
| void | BuildNeighbors (const TArray< FIndex3i > &Triangles) |
| |
| bool | IsVisible (const TVector< RealType > TriPts[3], const TVector< RealType > &Pt) |
| |
| void | SetTriPts (const FIndex3i &Tri, TFunctionRef< TVector< RealType >(int32)> GetPointFunc, TVector< RealType > TriPtsOut[3]) |
| |
| void | InitVisibility (const TArray< FIndex3i > &Triangles, int32 NumPoints, TFunctionRef< TVector< RealType >(int32)> GetPointFunc, TFunctionRef< bool(int32)> FilterFunc) |
| |
| void | UpdateNeighbors (int32 TriIdx, int32 NewIdx) |
| |
| void | UpdateNeighbor (TArray< FIndex3i > &Triangles, int32 TriIdx, int32 EdgeFirstVertex, int32 NewNbrIdx) |
| |
| bool | ValidateConnectivity (TArray< FIndex3i > &Triangles, TSet< int32 > Skip=TSet< int32 >()) |
| |
| void | DeleteTriangles (TArray< FIndex3i > &Triangles, const TSet< int32 > &ToDelete) |
| |
| FIndex2i | ChooseVisiblePoint (bool bChooseBestPoint) |
| |
| void | RemoveVisiblePoint (FIndex2i TriPointPair, TFunctionRef< TVector< RealType >(int32)> GetPointFunc) |
| |
| void | ClearVisiblePointsData (int32 TriIdx, TArray< int32 > &NewlyUnclaimed) |
| |
| bool | HorizonHelper (const TArray< FIndex3i > &Triangles, TFunctionRef< TVector< RealType >(int32)> GetPointFunc, const TVector< RealType > &Pt, TArray< int32 > &NewlyUnclaimed, TSet< int32 > &ToDelete, TArray< FNewTriangle > &ToAdd, int32 TriIdx, int32 CrossedEdgeFirstVertex, bool bCouldSkipPoint=false) |
| |
| bool | UpdateHullWithNewPoint (TArray< FIndex3i > &Triangles, int32 NumPoints, TFunctionRef< TVector< RealType >(int32)> GetPointFunc, int32 StartTriIdx, int32 PtIdx, RealType DegenerateEdgeToleranceSq=(RealType) 0) |
| |
◆ BuildNeighbors()
Fully build neighbor connectivity; only on the initial tet, as after that we can incrementally update connectivity w/ mesh changes
◆ ChooseVisiblePoint()
- Parameters
-
| bChooseBestPoint | Whether to choose the point with the highest value, rather than the first found point |
- Returns
- A triangle index and visible-from-that-triangle point index that can be added to the hull next
◆ ClearVisiblePointsData()
◆ DeleteTriangles()
Remove a triangle and update connectivity accordingly. Removes by swapping, and updates references as needed. Note: removes a whole set at a time, because indices change during deletion
- Parameters
-
| Triangles | All triangles |
| ToDelete | All triangles to be deleted |
◆ HorizonHelper()
Recursive traversal strategy that starts from a 'visible' triangle and walks to the connected set of all visible triangles, s.t. it visits the boundary in order See explanation here: http://algolist.ru/maths/geom/convhull/qhull3d.php
- Parameters
-
| Triangles | All triangles |
| GetPointFunc | Point access function |
| Pt | Current 'eye point'; triangles will be deleted if this point is on the 'positive' side of the triangle |
| NewlyUnclaimed | (Output) As we mark triangles for deletion, we move the visible points stored on the triangles to this giant list of points that need to be re-assigned (or culled) wrt the new triangles |
| ToDelete | (Output) Set of all triangles that we will delete |
| ToAdd | (Output) Info required to add and connect up new triangles to the eye point |
| TriIdx | Index of triangle to currently process |
| CrossedEdgeFirstVertex | The first vertex of the edge that was 'crossed over' to traverse to this TriIdx, or -1 for the initial call |
- Returns
- false if triangle is beyond horizon (so we don't need to search through it / remove it), true otherwise
◆ InitVisibility()
Bucket all points based on which triangles can see them
◆ IsVisible()
- Returns
- true if Pt is on the 'positive' side of the triangle
◆ RemoveVisiblePoint()
- Parameters
-
| TriPointPair | A tri point pair, as returned from ChooseVisiblePoint, that should be removed from consideration |
◆ SetTriPts()
Set triangle positions to prep for IsVisible calls
◆ UpdateHullWithNewPoint()
◆ UpdateNeighbor()
Rewrite one neighbor connection (and NOT the backwards connection)
- Parameters
-
| Triangles | All triangles |
| TriIdx | The triangle to update |
| EdgeFirstVertex | The first vertex of the edge that should be connected to the new neighbor |
| NewNbrIdx | The new neighbor to connect to |
◆ UpdateNeighbors()
Update any neighbor "back pointers" to TriIdx to instead point to NewIdx Used during triangle deletion when we swap a triangle to a new index
◆ ValidateConnectivity()
Debugging aid to validate the neighbor connectivity
◆ TriNeighbors
◆ TrisWithPoints
◆ VisibleDistanceThreshold
◆ VisiblePoints
The documentation for this struct was generated from the following file: