00001
00002
00008 #if !defined(__geom_mesh_iss_transform_h__)
00009 #define __geom_mesh_iss_transform_h__
00010
00011 #include "boundaryCondition.h"
00012 #include "build.h"
00013 #include "quality.h"
00014 #include "set.h"
00015
00016 #include "../simplex/SimplexJac.h"
00017
00018 #include "../../../ads/iterator/IntIterator.h"
00019 #include "../../../ads/iterator/TrivialOutputIterator.h"
00020 #include "../../../ads/iterator/TransformIterator.h"
00021
00022 #include <stack>
00023
00024 BEGIN_NAMESPACE_GEOM
00025
00026
00031
00033
00038 template<int N, int M, typename T, typename V, typename IS,
00039 typename IntOutputIterator>
00040 void
00041 pack(IndSimpSet<N,M,true,T,V,IS>* mesh, IntOutputIterator usedVertexIndices);
00042
00043
00044
00046
00051 template<int N, int M, typename T, typename V, typename IS>
00052 inline
00053 void
00054 pack(IndSimpSet<N,M,true,T,V,IS>* mesh) {
00055 pack(mesh, ads::TrivialOutputIterator());
00056 }
00057
00058
00060
00061 template<int N, bool A, typename T, typename V, typename IS>
00062 void
00063 orientPositive(IndSimpSet<N,N,A,T,V,IS>* mesh);
00064
00065
00067
00068 template<int N, int M, bool A, typename T, typename V, typename IS>
00069 void
00070 reverseOrientation(IndSimpSet<N,M,A,T,V,IS>* mesh);
00071
00072
00074
00075 template<int N, int M, bool A, typename T, typename V, typename IS,
00076 typename IntForIter, class UnaryFunction>
00077 void
00078 transform(IndSimpSet<N,M,A,T,V,IS>* mesh,
00079 IntForIter beginning, IntForIter end, const UnaryFunction& f);
00080
00081
00083
00084 template<int N, int M, bool A, typename T, typename V, typename IS,
00085 class UnaryFunction>
00086 void
00087 transform(IndSimpSet<N,M,A,T,V,IS> mesh, const UnaryFunction& f);
00088
00089
00091
00092 template<int N, int M, bool A, typename T, typename V, typename IS,
00093 typename IntForIter, class ISS>
00094 void
00095 transform(IndSimpSetIncAdj<N,M,A,T,V,IS>* mesh,
00096 IntForIter beginning, IntForIter end,
00097 const ISS_SD_ClosestPointDirection<ISS>& f);
00098
00099
00101
00102 template<int N, int M, bool A, typename T, typename V, typename IS, class ISS>
00103 void
00104 transform(IndSimpSetIncAdj<N,M,A,T,V,IS>* mesh,
00105 const ISS_SD_ClosestPointDirection<ISS>& f);
00106
00107
00109
00110 template<int N, int M, bool A, typename T, typename V, typename IS,
00111 typename IntForIter, class ISS>
00112 void
00113 transform(IndSimpSetIncAdj<N,M,A,T,V,IS>* mesh,
00114 IntForIter beginning, IntForIter end,
00115 const ISS_SD_CloserPointDirection<ISS>& f);
00116
00117
00119
00120 template<int N, int M, bool A, typename T, typename V, typename IS,
00121 class ISS>
00122 void
00123 transform(IndSimpSetIncAdj<N,M,A,T,V,IS>* mesh,
00124 const ISS_SD_CloserPointDirection<ISS>& f);
00125
00126
00128
00129 template<int N, int M, typename T, typename V, typename IS>
00130 void
00131 removeLowAdjacencies(IndSimpSetIncAdj<N,M,true,T,V,IS>* mesh,
00132 int minRequiredAdjencies);
00133
00134
00136
00137 END_NAMESPACE_GEOM
00138
00139 #define __geom_mesh_iss_transform_ipp__
00140 #include "transform.ipp"
00141 #undef __geom_mesh_iss_transform_ipp__
00142
00143 #endif