triangulation.hpp

Go to the documentation of this file.
00001 /*****************************************************************************
00002     
00003     triangulation.hpp -- routines for triangulation of polyhedral cone and
00004         general polyhedron.
00005 
00006     This file is a part of the Arageli library.
00007 
00008     Copyright (C) Sergey S. Lyalin, 2006
00009 
00010 *****************************************************************************/
00011 
00019 #ifndef _ARAGELI_triangulation_hpp_
00020 #define _ARAGELI_triangulation_hpp_
00021 
00022 #include "config.hpp"
00023 
00024 // REFERENCE ADDITIONAL HEADERS HERE
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 } // namespace ctrl
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 } // namesapce Arageli
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_

Generated on Thu Aug 31 17:38:12 2006 for Arageli by  doxygen 1.4.7