diff --git a/Common/Options.cpp b/Common/Options.cpp index 205da1e1327b2c6b386ad9f9681234f665101f3f..248d29e124333efd3050c30a4936dd4f6ae1e757 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -1,4 +1,4 @@ -// $Id: Options.cpp,v 1.71 2002-02-08 17:33:52 geuzaine Exp $ +// $Id: Options.cpp,v 1.72 2002-02-22 16:44:09 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -1615,6 +1615,10 @@ double opt_mesh_normals(OPT_ARGS_NUM){ double opt_mesh_tangents(OPT_ARGS_NUM){ if(action & GMSH_SET) CTX.mesh.tangents = val; +#ifdef _FLTK + if(WID && (action & GMSH_GUI)) + WID->mesh_value[13]->value(CTX.mesh.tangents); +#endif return CTX.mesh.tangents; } double opt_mesh_explode(OPT_ARGS_NUM){ diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index b435f3bba73c5db31c41ef741b61e0ee66a64a0b..7503beb0297c69065d7c45e3ddeeb9c512d31a57 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.109 2002-02-20 16:45:33 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.110 2002-02-22 16:44:09 geuzaine Exp $ #include <sys/types.h> #include <signal.h> @@ -486,7 +486,8 @@ void opt_mesh_ok_cb(CALLBACK_ARGS) { opt_mesh_radius_inf(0, GMSH_SET, WID->mesh_value[6]->value()); opt_mesh_radius_sup(0, GMSH_SET, WID->mesh_value[7]->value()); opt_mesh_normals(0, GMSH_SET, WID->mesh_value[8]->value()); - opt_mesh_explode(0, GMSH_SET, WID->mesh_value[9]->value()); + opt_mesh_explode(0, GMSH_SET, WID->mesh_value[9]->value()); + opt_mesh_tangents(0, GMSH_SET, WID->mesh_value[13]->value()); opt_mesh_point_size(0, GMSH_SET, WID->mesh_value[10]->value()); opt_mesh_line_width(0, GMSH_SET, WID->mesh_value[11]->value()); diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index 6818602dfc7553b626e259a8949d9eb95e2bc81a..41d4da70f0bdca40e5bc95f3a1d6c9eedac0d724 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -1,4 +1,4 @@ -// $Id: GUI.cpp,v 1.154 2002-02-20 16:41:20 geuzaine Exp $ +// $Id: GUI.cpp,v 1.155 2002-02-22 16:44:09 geuzaine Exp $ // To make the interface as visually consistent as possible, please: // - use the IW, BB, BH, BW and WB values @@ -1428,12 +1428,21 @@ void GUI::create_mesh_options_window(){ mesh_value[8] = new Fl_Value_Input(2*WB, 2*WB+7*BH, IW, BH, "Normals"); mesh_value[8]->minimum(0); mesh_value[8]->maximum(100); - mesh_value[8]->step(1); + mesh_value[8]->step(0.1); for(i=4 ; i<9 ; i++){ mesh_value[i]->labelsize(CTX.fontsize); mesh_value[i]->textsize(CTX.fontsize); mesh_value[i]->align(FL_ALIGN_RIGHT); } + + mesh_value[13] = new Fl_Value_Input(2*WB, 2*WB+8*BH, IW, BH, "Tangents"); + mesh_value[13]->minimum(0); + mesh_value[13]->maximum(100); + mesh_value[13]->step(0.1); + mesh_value[13]->labelsize(CTX.fontsize); + mesh_value[13]->textsize(CTX.fontsize); + mesh_value[13]->align(FL_ALIGN_RIGHT); + o->end(); } { diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp index 3859e5644d6f4c747112ff2ddbc60274a2d8b8b7..026f1e0819495d97ffb7a1bbfb5384d85af9a813 100644 --- a/Graphics/Mesh.cpp +++ b/Graphics/Mesh.cpp @@ -1,4 +1,4 @@ -// $Id: Mesh.cpp,v 1.46 2002-02-01 14:34:05 remacle Exp $ +// $Id: Mesh.cpp,v 1.47 2002-02-22 16:44:09 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -564,7 +564,7 @@ void Draw_Simplex_Surfaces (void *a, void *b){ void Draw_Simplex_Curves(void *a,void *b){ Simplex *s; - double Xc = 0.0 , Yc = 0.0, Zc = 0.0 ; + double Xc = 0.0 , Yc = 0.0, Zc = 0.0, m[3], mm ; char Num[100]; s = *(Simplex**)a; @@ -618,6 +618,20 @@ void Draw_Simplex_Curves(void *a,void *b){ Draw_String(Num); } + if(CTX.mesh.tangents) { + glColor4ubv((GLubyte*)&CTX.color.mesh.tangents); + m[0] = X[1]-X[0]; + m[1] = Y[1]-Y[0]; + m[2] = Z[1]-Z[0]; + norme(m); + m[0] *= CTX.mesh.tangents * CTX.pixel_equiv_x/CTX.s[0]; + m[1] *= CTX.mesh.tangents * CTX.pixel_equiv_x/CTX.s[1]; + m[2] *= CTX.mesh.tangents * CTX.pixel_equiv_x/CTX.s[2]; + mm = sqrt(m[0]*m[0]+m[1]*m[1]+m[2]*m[2]); + Draw_Vector(DRAW_POST_ARROW, 0, Xc,Yc,Zc,mm,m[0],m[1],m[2],NULL); + } + + }