00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00019 #ifndef _ARAGELI_triangulation_hpp_
00020 #define _ARAGELI_triangulation_hpp_
00021
00022 #include "config.hpp"
00023
00024
00025
00026
00027 namespace Arageli
00028 {
00029
00030
00031 namespace ctrl
00032 {
00033
00034 struct triangulate_simple_1_idler
00035 {
00036 class abort : public ctrl::abort {};
00037
00038 template <typename Q>
00039 void preamble (const Q& q) const {}
00040
00041 template <typename Row, typename Q>
00042 void select_vertex (const Row& row, const Q& q) const {}
00043
00044 template <typename Row, typename Vs, typename Q>
00045 void select_vertex
00046 (const Row& row, const Vs& newvertices, const Q& q) const {}
00047
00048 template <typename Row, typename Vs, typename Q>
00049 void finish_vertex
00050 (const Row& row, const Vs& vertices, const Q& q) const {}
00051
00052 template <typename Col, typename Vs, typename Q>
00053 void select_col
00054 (const Col& col, const Vs& vertices, const Q& q) const {}
00055
00056 template <typename Col, typename Vs, typename Q>
00057 void select_side
00058 (const Col& col, const Vs& newvertices, const Q& q) const {}
00059
00060 template <typename Sm, typename Vs, typename Q, typename Tr>
00061 void new_simplex
00062 (
00063 const Sm& simplex, const Vs& vertices,
00064 const Q& q, const Tr& tr
00065 ) const {}
00066
00067 template <typename Q, typename Tr>
00068 void conclusion (const Q& q, const Tr& tr) const {}
00069 };
00070
00071 }
00072
00073
00075
00084 template
00085 <
00086 typename Q,
00087 typename Dim1,
00088 typename TR,
00089 typename Dim2,
00090 typename Ctrler
00091 >
00092 void triangulate_simple_1
00093 (
00094 const Q& q,
00095 const Dim1& dim,
00096 TR& tr,
00097 const Dim2& subspdim,
00098 Ctrler ctrler
00099 );
00100
00101
00103
00104 template
00105 <
00106 typename Q,
00107 typename Dim1,
00108 typename TR,
00109 typename Dim2
00110 >
00111 inline void triangulate_simple_1 (const Q& q, const Dim1& dim, TR& tr, const Dim2& subspdim)
00112 { triangulate_simple_1(q, dim, tr, subspdim, ctrl::triangulate_simple_1_idler()); }
00113
00114
00116
00117 template
00118 <
00119 typename Q,
00120 typename Dim1,
00121 typename TR
00122 >
00123 inline void triangulate_simple_1 (const Q& q, const Dim1& dim, TR& tr)
00124 { triangulate_simple_1(q, dim, tr, 0, ctrl::triangulate_simple_1_idler()); }
00125
00126
00127
00128 }
00129
00130
00131 #ifdef ARAGELI_INCLUDE_CPP_WITH_EXPORT_TEMPLATE
00132 #define ARAGELI_INCLUDE_CPP_WITH_EXPORT_TEMPLATE_triangulation
00133 #include "triangulation.cpp"
00134 #undef ARAGELI_INCLUDE_CPP_WITH_EXPORT_TEMPLATE_triangulation
00135 #endif
00136
00137 #endif // #ifndef _ARAGELI_triangulation_hpp_