00001
00002
00008 #if !defined(__geom_mesh_iss_geometry_h__)
00009 #define __geom_mesh_iss_geometry_h__
00010
00011 #include "IndSimpSetIncAdj.h"
00012
00013 #include "../simplex/geometry.h"
00014
00015 BEGIN_NAMESPACE_GEOM
00016
00017
00020
00021
00022
00023
00024
00026 template<bool A, typename T, typename V, typename IS>
00027 typename IndSimpSetIncAdj<2,1,A,T,V,IS>::Vertex
00028 computeVertexNormal(const IndSimpSetIncAdj<2,1,A,T,V,IS>& mesh, int n);
00029
00030
00032 template<bool A, typename T, typename V, typename IS>
00033 void
00034 computeVertexNormal(const IndSimpSetIncAdj<2,1,A,T,V,IS>& mesh, int n,
00035 typename IndSimpSetIncAdj<2,1,A,T,V,IS>::Vertex* normal);
00036
00037
00039 template<bool A, typename T, typename V, typename IS>
00040 typename IndSimpSetIncAdj<2,2,A,T,V,IS>::Vertex
00041 computeVertexNormal(const IndSimpSetIncAdj<2,2,A,T,V,IS>& mesh, int n);
00042
00043
00045 template<bool A, typename T, typename V, typename IS>
00046 void
00047 computeVertexNormal(const IndSimpSetIncAdj<2,2,A,T,V,IS>& mesh, int n,
00048 typename IndSimpSetIncAdj<2,2,A,T,V,IS>::Vertex* normal);
00049
00050
00052 template<bool A, typename T, typename V, typename IS>
00053 typename IndSimpSetIncAdj<3,2,A,T,V,IS>::Vertex
00054 computeVertexNormal(const IndSimpSetIncAdj<3,2,A,T,V,IS>& mesh, int n);
00055
00056
00058 template<bool A, typename T, typename V, typename IS>
00059 void
00060 computeVertexNormal(const IndSimpSetIncAdj<3,2,A,T,V,IS>& mesh, int n,
00061 typename IndSimpSetIncAdj<3,2,A,T,V,IS>::Vertex* normal);
00062
00063
00065 template<bool A, typename T, typename V, typename IS>
00066 typename IndSimpSetIncAdj<3,3,A,T,V,IS>::Vertex
00067 computeVertexNormal(const IndSimpSetIncAdj<3,3,A,T,V,IS>& mesh, int n);
00068
00069
00071 template<bool A, typename T, typename V, typename IS>
00072 void
00073 computeVertexNormal(const IndSimpSetIncAdj<3,3,A,T,V,IS>& mesh, int n,
00074 typename IndSimpSetIncAdj<3,3,A,T,V,IS>::Vertex* normal);
00075
00076
00077
00079 template<bool A, typename T, typename V, typename IS>
00080 void
00081 computeSimplexNormal(const IndSimpSetIncAdj<3,2,A,T,V,IS>& mesh,
00082 int simplexIndex, V* simplexNormal);
00083
00084
00086 template<bool A, typename T, typename V, typename IS, bool AA>
00087 void
00088 computeSimplexNormals(const IndSimpSetIncAdj<3,2,A,T,V,IS>& mesh,
00089 ads::Array<1,V,AA>* simplexNormals);
00090
00091
00093 template<bool A, typename T, typename V, typename IS, bool AA>
00094 void
00095 computeSimplexNormals(const IndSimpSetIncAdj<2,1,A,T,V,IS>& mesh,
00096 ads::Array<1,V,AA>* simplexNormals);
00097
00098
00100 template<bool A, typename T, typename V, typename IS, bool AA>
00101 void
00102 computeVertexNormals(const IndSimpSetIncAdj<3,2,A,T,V,IS>& mesh,
00103 const ads::Array<1,V,AA>& simplexNormals,
00104 ads::Array<1,V,AA>* vertexNormals);
00105
00106
00108 template<bool A, typename T, typename V, typename IS, bool A1, bool A2>
00109 void
00110 computeSimplexAndVertexNormals(const IndSimpSetIncAdj<3,2,A,T,V,IS>& mesh,
00111 ads::Array<1,V,A1>* simplexNormals,
00112 ads::Array<1,V,A2>* vertexNormals);
00113
00114
00115
00117
00120 template<int N, bool A, typename T, typename V, typename IS>
00121 T
00122 computeCosineAngle(const IndSimpSetIncAdj<N,1,A,T,V,IS>& mesh,
00123 int vertexIndex);
00124
00125
00127
00130 template<bool A, typename T, typename V, typename IS>
00131 T
00132 computeCosineAngle(const IndSimpSetIncAdj<3,2,A,T,V,IS>& mesh,
00133 const typename IndSimpSetIncAdj<3,2,A,T,V,IS>::Face& face);
00134
00135
00137
00142 template<bool A, typename T, typename V, typename IS>
00143 T
00144 computeCosineBoundaryAngle(const IndSimpSetIncAdj<3,2,A,T,V,IS>& mesh,
00145 int vertexIndex);
00146
00147
00149 template<bool A, typename T, typename V, typename IS>
00150 T
00151 computeAngle(const IndSimpSetIncAdj<3,2,A,T,V,IS>& mesh, int n);
00152
00153
00155 template<bool A, typename T, typename V, typename IS, typename OutputIterator>
00156 void
00157 projectAndGetSimplices(const IndSimpSet<2,1,A,T,V,IS>& mesh,
00158 OutputIterator simplices);
00159
00160
00162 template<bool A, typename T, typename V, typename IS, typename OutputIterator>
00163 void
00164 projectAndGetSimplices(const IndSimpSet<3,2,A,T,V,IS>& mesh,
00165 OutputIterator simplices);
00166
00168
00169 END_NAMESPACE_GEOM
00170
00171 #define __geom_mesh_iss_geometry_ipp__
00172 #include "geometry.ipp"
00173 #undef __geom_mesh_iss_geometry_ipp__
00174
00175 #endif