00001
00002
00008 #if !defined(__geom_mesh_iss_set_h__)
00009 #define __geom_mesh_iss_set_h__
00010
00011 #include "IndSimpSetIncAdj.h"
00012 #include "ISS_SimplexQuery.h"
00013
00014 #include <set>
00015 #include <stack>
00016
00017 BEGIN_NAMESPACE_GEOM
00018
00019
00024
00026
00036 template<int N, int M, bool A, typename T, typename V, typename IS,
00037 class LSF, typename IntOutIter>
00038 void
00039 determineVerticesInside(const IndSimpSet<N,M,A,T,V,IS>& mesh,
00040 const LSF& f, IntOutIter indexIterator);
00041
00042
00044
00055 template<int N, int M, bool A, typename T, typename V, typename IS,
00056 class LSF, typename IntOutIter>
00057 void
00058 determineSimplicesInside(const IndSimpSet<N,M,A,T,V,IS>& mesh,
00059 const LSF& f, IntOutIter indexIterator);
00060
00061
00063
00070 template<int N, int M, bool A, typename T, typename V, typename IS,
00071 class UnaryFunction, typename IntOutIter>
00072 void
00073 determineSimplicesThatSatisfyCondition(const IndSimpSet<N,M,A,T,V,IS>& mesh,
00074 const UnaryFunction& f,
00075 IntOutIter indexIterator);
00076
00077
00079
00088 template<int N, int M, bool A, typename T, typename V, typename IS,
00089 typename IntOutIter>
00090 void
00091 determineOverlappingSimplices(const IndSimpSet<N,M,A,T,V,IS>& mesh,
00092 const BBox<N,T>& domain,
00093 IntOutIter indexIterator);
00094
00095
00097
00105 template<int N, int M, bool A, typename T, typename V, typename IS,
00106 typename IntOutIter>
00107 void
00108 determineSimplicesWithRequiredAdjacencies
00109 (const IndSimpSetIncAdj<N,M,A,T,V,IS>& mesh,
00110 int minRequiredAdjacencies, IntOutIter indexIterator);
00111
00112
00114
00115 template<int N, int M, bool A, typename T, typename V, typename IS,
00116 typename IntOutIter>
00117 void
00118 determineInteriorVertices(const IndSimpSetIncAdj<N,M,A,T,V,IS>& mesh,
00119 IntOutIter indexIterator);
00120
00121
00123
00124 template<int N, int M, bool A, typename T, typename V, typename IS,
00125 typename IntOutIter>
00126 void
00127 determineBoundaryVertices(const IndSimpSetIncAdj<N,M,A,T,V,IS>& mesh,
00128 IntOutIter indexIterator);
00129
00130
00132
00133 template<int N, int M, bool A, typename T, typename V, typename IS,
00134 typename IntInIter, typename IntOutIter>
00135 void
00136 determineIncidentVertices(const IndSimpSet<N,M,A,T,V,IS>& mesh,
00137 IntInIter simplexIndicesBeginning,
00138 IntInIter simplexIndicesEnd,
00139 IntOutIter vertexIndicesIterator);
00140
00141
00143
00144 template<int N, int M, bool A, typename T, typename V, typename IS,
00145 typename IntInIter, typename IntOutIter>
00146 void
00147 determineIncidentSimplices(const IndSimpSetIncAdj<N,M,A,T,V,IS>& mesh,
00148 IntInIter vertexIndicesBeginning,
00149 IntInIter vertexIndicesEnd,
00150 IntOutIter simplexIndicesIterator);
00151
00152
00154
00157 template<typename IntForIter, typename IntOutIter>
00158 void
00159 determineComplementSetOfIndices(const int upperBound,
00160 IntForIter beginning, IntForIter end,
00161 IntOutIter indexIterator);
00162
00163
00165
00166 template<int N, int M, bool A, typename T, typename V, typename IS,
00167 typename IntOutIter>
00168 void
00169 determineSimplicesInComponent(const IndSimpSetIncAdj<N,M,A,T,V,IS>& mesh,
00170 int index, IntOutIter indexIterator);
00171
00172
00174
00183 template<int N, int M, bool A, typename T, typename V, typename IS,
00184 typename IntOutputIterator>
00185 void
00186 separateComponents(IndSimpSetIncAdj<N,M,A,T,V,IS>* mesh,
00187 IntOutputIterator delimiterIterator);
00188
00189
00191
00202 template<int N, int M, bool A, typename T, typename V, typename IS,
00203 typename IntOutputIterator1, typename IntOutputIterator2>
00204 void
00205 separateComponents(IndSimpSetIncAdj<N,M,A,T,V,IS>* mesh,
00206 IntOutputIterator1 delimiterIterator,
00207 IntOutputIterator2 permutationIterator);
00208
00210
00211 END_NAMESPACE_GEOM
00212
00213 #define __geom_mesh_iss_set_ipp__
00214 #include "set.ipp"
00215 #undef __geom_mesh_iss_set_ipp__
00216
00217 #endif