00001
00006 #ifndef SNAKE_H
00007 #define SNAKE_H
00008
00009
00010 #include <CGAL/Filtered_kernel.h>
00011 #include "region.h"
00012
00019 class Snake
00020 {
00021 public:
00022 typedef Enriched_polyhedron<Enriched_kernel,Enriched_items> Polyhedron ;
00023 typedef Enriched_polyhedron<Enriched_kernel,Enriched_items>::Vertex_handle Vertex_handle;
00024 typedef Enriched_polyhedron<Enriched_kernel,Enriched_items>::Point Point;
00025
00026 private:
00032 std::vector< Vertex_handle > Snake_VH;
00033
00035 double* WeightsA ;
00036
00038 double* WeightsB ;
00039
00045 Region R;
00046
00047 bool R_is_initialized;
00048
00050 int dim;
00051
00053 double (*A)[200];
00054
00056 double Pas_Gamma;
00057
00058 public:
00059
00060
00061
00063 Snake();
00064
00065
00066
00067
00068
00080 Snake( std::vector< Vertex_handle > S , Polyhedron localRegion) ;
00081
00094 Snake( std::vector< std::vector< Vertex_handle > > S , Polyhedron localRegion) ;
00095
00097 ~Snake();
00098
00099
00101 void Affiche_snake() const;
00102
00104 void draw_snake2D() const;
00105
00107 void draw_snake3D() const;
00108
00110 void Maj_A();
00111
00113 void Affiche_A();
00114
00116 void Set_A(int i,int j, double f);
00117
00119 double Get_A(int i,int j);
00120
00122 Region* getRegion() { return &R ; }
00123
00125 void Energy_minimization(int n_iterations);
00126
00128 void Set_Pas_Gamma(double f);
00129
00131 double Get_Pas_Gamma();
00132
00134 int Get_dim();
00135
00137 void Set_Snake_WeightsA( double* Vec, int taille);
00138
00140 void Set_Snake_WeightsB( double* Vec, int taille);
00141
00143 double* Get_Snake_WeightsA();
00144
00146 double* Get_Snake_WeightsB();
00147 };
00148
00149 #endif