From 8e594ae069ae4c45bfd82d75e27625bcf4097bb6 Mon Sep 17 00:00:00 2001 From: Tristan Carrier Baudouin <tristan.carrier@uclouvain.be> Date: Fri, 23 Mar 2012 08:52:49 +0000 Subject: [PATCH] R-tree in GUI --- Common/CommandLine.cpp | 2 ++ Common/DefaultOptions.h | 2 +- Common/GmshDefines.h | 1 + Common/Options.cpp | 3 +++ Fltk/optionWindow.cpp | 2 ++ Mesh/Generator.cpp | 5 +++++ 6 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp index dadf048f62..6f2d7e8609 100644 --- a/Common/CommandLine.cpp +++ b/Common/CommandLine.cpp @@ -580,6 +580,8 @@ void GetOptions(int argc, char *argv[]) CTX::instance()->mesh.algo3d = ALGO_3D_FRONTAL_DEL; else if(!strncmp(argv[i], "delhex3d", 8)) CTX::instance()->mesh.algo3d = ALGO_3D_FRONTAL_HEX; + else if(!strncmp(argv[i], "rtree3d", 9)) + CTX::instance()->mesh.algo3d = ALGO_3D_RTREE; else Msg::Fatal("Unknown mesh algorithm"); i++; diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h index 560a279f8e..b7120cf054 100644 --- a/Common/DefaultOptions.h +++ b/Common/DefaultOptions.h @@ -772,7 +772,7 @@ StringXNumber MeshOptions_Number[] = { #else ALGO_3D_FRONTAL , #endif - "3D mesh algorithm (1=Delaunay, 4=Frontal, 5=Frontal Delaunay, 6=Frontal Hex, 7=MMG3D)" }, + "3D mesh algorithm (1=Delaunay, 4=Frontal, 5=Frontal Delaunay, 6=Frontal Hex, 7=MMG3D, 9=R-tree)" }, { F|O, "AngleSmoothNormals" , opt_mesh_angle_smooth_normals , 30.0 , "Threshold angle below which normals are not smoothed" }, { F|O, "AnisoMax" , opt_mesh_aniso_max, 1.e33, diff --git a/Common/GmshDefines.h b/Common/GmshDefines.h index 3fdcb551b4..874b15a4d2 100644 --- a/Common/GmshDefines.h +++ b/Common/GmshDefines.h @@ -223,6 +223,7 @@ #define ALGO_3D_FRONTAL_DEL 5 #define ALGO_3D_FRONTAL_HEX 6 #define ALGO_3D_MMG3D 7 +#define ALGO_3D_RTREE 9 // Meshing methods #define MESH_NONE 0 diff --git a/Common/Options.cpp b/Common/Options.cpp index 657064bec7..f4c3dce18f 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -5046,6 +5046,9 @@ double opt_mesh_algo3d(OPT_ARGS_NUM) case ALGO_3D_FRONTAL: FlGui::instance()->options->mesh.choice[3]->value(1); break; + case ALGO_3D_RTREE: + FlGui::instance()->options->mesh.choice[3]->value(5); + break; case ALGO_3D_DELAUNAY: default: FlGui::instance()->options->mesh.choice[3]->value(0); diff --git a/Fltk/optionWindow.cpp b/Fltk/optionWindow.cpp index ecd397fe4e..56cddad00b 100644 --- a/Fltk/optionWindow.cpp +++ b/Fltk/optionWindow.cpp @@ -517,6 +517,7 @@ static void mesh_options_ok_cb(Fl_Widget *w, void *data) (o->mesh.choice[3]->value() == 2) ? ALGO_3D_FRONTAL_DEL : (o->mesh.choice[3]->value() == 3) ? ALGO_3D_FRONTAL_HEX : (o->mesh.choice[3]->value() == 4) ? ALGO_3D_MMG3D : + (o->mesh.choice[3]->value() == 5) ? ALGO_3D_RTREE : ALGO_3D_FRONTAL); opt_mesh_algo_recombine(0, GMSH_SET, o->mesh.choice[1]->value()); opt_mesh_recombine_all(0, GMSH_SET, o->mesh.butt[21]->value()); @@ -2129,6 +2130,7 @@ optionWindow::optionWindow(int deltaFontSize) {"Frontal Delaunay", 0, 0, 0}, {"Frontal Hex", 0, 0, 0}, {"MMG3D", 0, 0, 0}, + {"R-tree", 0, 0, 0}, {0} }; static Fl_Menu_Item menu_recombination_algo[] = { diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp index c22b42aabc..47570a25ce 100644 --- a/Mesh/Generator.cpp +++ b/Mesh/Generator.cpp @@ -31,6 +31,7 @@ #include "CenterlineField.h" #include "Field.h" #include "Options.h" +#include "Simple3D.h" #if defined(HAVE_POST) #include "PView.h" @@ -556,6 +557,10 @@ static void Mesh3D(GModel *m) FindConnectedRegions(delaunay, connected); for(unsigned int i = 0; i < connected.size(); i++){ MeshDelaunayVolume(connected[i]); + if(CTX::instance()->mesh.algo3d==ALGO_3D_RTREE){ + Filler f; + f.treat_region(connected[i][0]); + } } double t2 = Cpu(); -- GitLab