From 8f677ee3591b8728cfa2fd40ba9b14cfc82f021d Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Fri, 3 Aug 2001 21:27:20 +0000 Subject: [PATCH] View.Explode + Clean-up View.Offset --- Common/DefaultOptions.h | 2 + Common/Options.cpp | 14 ++- Common/Options.h | 1 + Common/Views.cpp | 3 +- Common/Views.h | 2 +- Fltk/Callbacks.cpp | 5 +- Fltk/GUI.cpp | 90 ++++++++-------- Graphics/Draw.h | 15 ++- Graphics/Entity.cpp | 60 +++++------ Graphics/Geom.cpp | 8 +- Graphics/IsoSimplex.cpp | 6 +- Graphics/IsoSimplex.h | 2 +- Graphics/Mesh.cpp | 4 +- Graphics/Post.cpp | 217 ++++++++++++++++++++++++++------------- Graphics/PostSimplex.cpp | 121 +++++++++------------- 15 files changed, 305 insertions(+), 245 deletions(-) diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h index 4b1214e5ab..deab98228d 100644 --- a/Common/DefaultOptions.h +++ b/Common/DefaultOptions.h @@ -443,6 +443,8 @@ StringXNumber ViewOptions_Number[] = { "Elevation of the view along Z-axis (in model coordinates)" }, { F|O, "ArrowScale" , opt_view_arrow_scale , 50. , "Size of the vector (e.g. arrow size in pixels)" }, + { F, "Explode" , opt_view_explode , 1. , + "Explode elements (0: reduced to a point; 1: not transformed)" }, { F, "Visible" , opt_view_visible , 1. , "Is the view visible?" }, { F|O, "IntervalsType" , opt_view_intervals_type , DRAW_POST_ISO , diff --git a/Common/Options.cpp b/Common/Options.cpp index 1b80f7c6fc..dd3c8c5b5f 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -1,4 +1,4 @@ -// $Id: Options.cpp,v 1.37 2001-08-02 19:11:40 geuzaine Exp $ +// $Id: Options.cpp,v 1.38 2001-08-03 21:27:20 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -1703,6 +1703,18 @@ double opt_view_arrow_scale(OPT_ARGS_NUM){ #endif return v->ArrowScale; } +double opt_view_explode(OPT_ARGS_NUM){ + GET_VIEW(0.) ; + if(action & GMSH_SET){ + v->Explode = val; + v->Changed = 1; + } +#ifdef _FLTK + if(WID && (action & GMSH_GUI) && (num == WID->view_number)) + WID->view_value[12]->value(v->Explode); +#endif + return v->Explode; +} double opt_view_visible(OPT_ARGS_NUM){ GET_VIEW(0.) ; if(action & GMSH_SET){ diff --git a/Common/Options.h b/Common/Options.h index cee1623d93..30ed840b5b 100644 --- a/Common/Options.h +++ b/Common/Options.h @@ -203,6 +203,7 @@ double opt_view_raise0(OPT_ARGS_NUM); double opt_view_raise1(OPT_ARGS_NUM); double opt_view_raise2(OPT_ARGS_NUM); double opt_view_arrow_scale(OPT_ARGS_NUM); +double opt_view_explode(OPT_ARGS_NUM); double opt_view_visible(OPT_ARGS_NUM); double opt_view_intervals_type(OPT_ARGS_NUM); double opt_view_saturate_values(OPT_ARGS_NUM); diff --git a/Common/Views.cpp b/Common/Views.cpp index c928347ca2..fd75c1fa73 100644 --- a/Common/Views.cpp +++ b/Common/Views.cpp @@ -1,4 +1,4 @@ -// $Id: Views.cpp,v 1.45 2001-07-31 08:02:26 geuzaine Exp $ +// $Id: Views.cpp,v 1.46 2001-08-03 21:27:20 geuzaine Exp $ #include <set> #include "Gmsh.h" @@ -404,6 +404,7 @@ void CopyViewOptions(Post_View *src, Post_View *dest){ dest->Raise[1] = src->Raise[1]; dest->Raise[2] = src->Raise[2]; dest->ArrowScale = src->ArrowScale; + dest->Explode = src->Explode; dest->Visible = src->Visible; dest->IntervalsType = src->IntervalsType; dest->SaturateValues = src->SaturateValues; diff --git a/Common/Views.h b/Common/Views.h index d4d7d37819..45cd96db2c 100644 --- a/Common/Views.h +++ b/Common/Views.h @@ -29,7 +29,7 @@ class Post_View{ // options char Format[NAME_STR_L]; double CustomMin, CustomMax; - double Offset[3], Raise[3], ArrowScale; + double Offset[3], Raise[3], ArrowScale, Explode; int Visible, IntervalsType, NbIso, Light, SmoothNormals ; int SaturateValues; int ShowElement, ShowTime, ShowScale; diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index e70cab0249..10a81d7676 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.71 2001-07-31 19:25:04 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.72 2001-08-03 21:27:20 geuzaine Exp $ #include <sys/types.h> #include <signal.h> @@ -519,7 +519,7 @@ void help_short_cb(CALLBACK_ARGS){ Msg(DIRECT, " Alt+Shift+p hide/show mesh points"); Msg(DIRECT, " Alt+s hide/show geometry surfaces"); Msg(DIRECT, " Alt+Shift+s hide/show mesh surfaces"); - Msg(DIRECT, " Alt+t alternate intervals mode for all post-processing views"); + Msg(DIRECT, " Alt+t alternate intervals mode for visible post-processing views"); Msg(DIRECT, " Alt+v hide/show geometry volumes"); Msg(DIRECT, " Alt+Shift+v hide/show mesh volumes"); Msg(DIRECT, " Alt+x set X view"); @@ -1727,6 +1727,7 @@ void view_options_ok_cb(CALLBACK_ARGS){ opt_view_timestep(i, GMSH_SET, WID->view_value[9]->value()); opt_view_arrow_scale(i, GMSH_SET, WID->view_value[10]->value()); opt_view_boundary(i, GMSH_SET, WID->view_value[11]->value()); + opt_view_explode(i, GMSH_SET, WID->view_value[12]->value()); opt_view_name(i, GMSH_SET, (char*)WID->view_input[0]->value()); opt_view_format(i, GMSH_SET, (char*)WID->view_input[1]->value()); diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index af1c7359a7..79f9bc5aa8 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -1,4 +1,4 @@ -// $Id: GUI.cpp,v 1.100 2001-07-31 19:25:04 geuzaine Exp $ +// $Id: GUI.cpp,v 1.101 2001-08-03 21:27:20 geuzaine Exp $ // To make the interface as visually consistent as possible, please: // - use the BH, BW, WB, IW values for button heights/widths, window borders, etc. @@ -1240,10 +1240,10 @@ void GUI::create_mesh_options_window(){ mesh_butt[5] = new Fl_Check_Button(2*WB, 2*WB+2*BH, IW, BH, "Curves"); mesh_butt[6] = new Fl_Check_Button(2*WB, 2*WB+3*BH, IW, BH, "Surfaces"); mesh_butt[7] = new Fl_Check_Button(2*WB, 2*WB+4*BH, IW, BH, "Volumes"); - mesh_butt[8] = new Fl_Check_Button(width/2, 2*WB+1*BH, IW, BH, "Point Numbers"); - mesh_butt[9] = new Fl_Check_Button(width/2, 2*WB+2*BH, IW, BH, "Curve Numbers"); - mesh_butt[10] = new Fl_Check_Button(width/2, 2*WB+3*BH, IW, BH, "Surface Numbers"); - mesh_butt[11] = new Fl_Check_Button(width/2, 2*WB+4*BH, IW, BH, "Volume Numbers"); + mesh_butt[8] = new Fl_Check_Button(width/2, 2*WB+1*BH, IW, BH, "Point numbers"); + mesh_butt[9] = new Fl_Check_Button(width/2, 2*WB+2*BH, IW, BH, "Curve numbers"); + mesh_butt[10] = new Fl_Check_Button(width/2, 2*WB+3*BH, IW, BH, "Surface numbers"); + mesh_butt[11] = new Fl_Check_Button(width/2, 2*WB+4*BH, IW, BH, "Volume numbers"); for(i=4 ; i<12 ; i++){ mesh_butt[i]->type(FL_TOGGLE_BUTTON); mesh_butt[i]->down_box(FL_DOWN_BOX); @@ -1567,7 +1567,7 @@ void GUI::create_statistics_window(){ o->labelsize(CTX.fontsize); o->hide(); stat_value[18] = new Fl_Output(2*WB, 2*WB+1*BH, IW, BH, "Views"); - stat_value[19] = new Fl_Output(2*WB, 2*WB+2*BH, IW, BH, "Visible Points"); + stat_value[19] = new Fl_Output(2*WB, 2*WB+2*BH, IW, BH, "Visible points"); stat_value[20] = new Fl_Output(2*WB, 2*WB+3*BH, IW, BH, "Visible lines"); stat_value[21] = new Fl_Output(2*WB, 2*WB+4*BH, IW, BH, "Visible triangles"); stat_value[22] = new Fl_Output(2*WB, 2*WB+5*BH, IW, BH, "Visible tetrahedra"); @@ -1946,26 +1946,52 @@ void GUI::create_view_options_window(int num){ Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "General"); o->labelsize(CTX.fontsize); o->hide(); - view_butt[13] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Show elements"); - view_butt[14] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Show color bar"); - view_butt[15] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Display time"); - view_butt[16] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Transparent color bar"); - view_butt[17] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Enable Lighting"); - view_butt[27] = new Fl_Check_Button(2*WB, 2*WB+6*BH, BW, BH, "Smooth normals"); + view_input[0] = new Fl_Input(2*WB, 2*WB+1*BH, IW, BH, "Name"); + view_input[1] = new Fl_Input(2*WB, 2*WB+2*BH, IW, BH, "Format"); + for(i=0 ; i<2 ; i++){ + view_input[i]->labelsize(CTX.fontsize); + view_input[i]->textsize(CTX.fontsize); + view_input[i]->align(FL_ALIGN_RIGHT); + } + + view_butt[13] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Show elements"); + view_butt[14] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Show color bar"); + view_butt[15] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Display time"); + view_butt[16] = new Fl_Check_Button(2*WB, 2*WB+6*BH, BW, BH, "Transparent color bar"); + view_butt[17] = new Fl_Check_Button(2*WB, 2*WB+7*BH, BW, BH, "Enable Lighting"); + + view_butt[27] = new Fl_Check_Button(2*WB, 2*WB+8*BH, BW, BH, "Smooth normals"); view_butt[27]->type(FL_TOGGLE_BUTTON); view_butt[27]->down_box(FL_DOWN_BOX); view_butt[27]->labelsize(CTX.fontsize); view_butt[27]->selection_color(FL_YELLOW); - view_butt[18] = new Fl_Check_Button(width/2, 2*WB+1*BH, BW, BH, "Draw points"); - view_butt[19] = new Fl_Check_Button(width/2, 2*WB+2*BH, BW, BH, "Draw lines"); - view_butt[20] = new Fl_Check_Button(width/2, 2*WB+3*BH, BW, BH, "Draw triangles"); - view_butt[21] = new Fl_Check_Button(width/2, 2*WB+4*BH, BW, BH, "Draw tetrahedra"); + view_value[11] = new Fl_Value_Input(width/2, 2*WB+ 1*BH, IW, BH, "Boundary"); + view_value[11]->labelsize(CTX.fontsize); + view_value[11]->textsize(CTX.fontsize); + view_value[11]->type(FL_HORIZONTAL); + view_value[11]->align(FL_ALIGN_RIGHT); + view_value[11]->minimum(0); + view_value[11]->step(1); + view_value[11]->maximum(3); - view_butt[22] = new Fl_Check_Button(width/2, 2*WB+5*BH, BW, BH, "Draw scalar values"); - view_butt[23] = new Fl_Check_Button(width/2, 2*WB+6*BH, BW, BH, "Draw vector values"); - view_butt[24] = new Fl_Check_Button(width/2, 2*WB+7*BH, BW, BH, "Draw tensor values"); + view_value[12] = new Fl_Value_Input(width/2, 2*WB+ 2*BH, IW, BH, "Explode"); + view_value[12]->labelsize(CTX.fontsize); + view_value[12]->textsize(CTX.fontsize); + view_value[12]->type(FL_HORIZONTAL); + view_value[12]->align(FL_ALIGN_RIGHT); + view_value[12]->minimum(0.); + view_value[12]->step(0.01); + view_value[12]->maximum(1.); + + view_butt[18] = new Fl_Check_Button(width/2, 2*WB+3*BH, BW, BH, "Draw points"); + view_butt[19] = new Fl_Check_Button(width/2, 2*WB+4*BH, BW, BH, "Draw lines"); + view_butt[20] = new Fl_Check_Button(width/2, 2*WB+5*BH, BW, BH, "Draw triangles"); + view_butt[21] = new Fl_Check_Button(width/2, 2*WB+6*BH, BW, BH, "Draw tetrahedra"); + view_butt[22] = new Fl_Check_Button(width/2, 2*WB+7*BH, BW, BH, "Draw scalar values"); + view_butt[23] = new Fl_Check_Button(width/2, 2*WB+8*BH, BW, BH, "Draw vector values"); + view_butt[24] = new Fl_Check_Button(width/2, 2*WB+9*BH, BW, BH, "Draw tensor values"); for(i=13 ; i<25 ; i++){ view_butt[i]->type(FL_TOGGLE_BUTTON); view_butt[i]->down_box(FL_DOWN_BOX); @@ -1973,14 +1999,6 @@ void GUI::create_view_options_window(int num){ view_butt[i]->selection_color(FL_YELLOW); } - view_input[0] = new Fl_Input(2*WB, 2*WB+7*BH, IW, BH, "Name"); - view_input[1] = new Fl_Input(2*WB, 2*WB+8*BH, IW, BH, "Format"); - for(i=0 ; i<2 ; i++){ - view_input[i]->labelsize(CTX.fontsize); - view_input[i]->textsize(CTX.fontsize); - view_input[i]->align(FL_ALIGN_RIGHT); - } - o->end(); } // Range @@ -1988,7 +2006,7 @@ void GUI::create_view_options_window(int num){ Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Range"); o->labelsize(CTX.fontsize); o->hide(); - view_butt[0] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Custom Range"); + view_butt[0] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Custom range"); view_butt[0]->type(FL_TOGGLE_BUTTON); view_butt[0]->down_box(FL_DOWN_BOX); view_butt[0]->labelsize(CTX.fontsize); @@ -2010,14 +2028,12 @@ void GUI::create_view_options_window(int num){ view_butt[i]->labelsize(CTX.fontsize); view_butt[i]->selection_color(FL_YELLOW); } - /// ADD JF - DOUBLE LOG SCALE - /// ADD JF - POSSIBILITY OF SATURATING VALUES - view_butt[26] = new Fl_Check_Button(2*WB, 2*WB+6*BH, BW, BH, "Double Logarithmic"); + view_butt[26] = new Fl_Check_Button(2*WB, 2*WB+6*BH, BW, BH, "Double logarithmic"); view_butt[26]->type(FL_RADIO_BUTTON); view_butt[26]->labelsize(CTX.fontsize); view_butt[26]->selection_color(FL_YELLOW); - view_butt[25] = new Fl_Check_Button(2*WB, 2*WB+7*BH, BW, BH, "Saturate Values"); + view_butt[25] = new Fl_Check_Button(2*WB, 2*WB+7*BH, BW, BH, "Saturate values"); view_butt[25]->type(FL_TOGGLE_BUTTON); view_butt[25]->down_box(FL_DOWN_BOX); view_butt[25]->labelsize(CTX.fontsize); @@ -2048,14 +2064,6 @@ void GUI::create_view_options_window(int num){ view_butt[i]->labelsize(CTX.fontsize); view_butt[i]->selection_color(FL_YELLOW); } - view_value[11] = new Fl_Value_Input(2*WB, 2*WB+ 6*BH, IW, BH, "Boundary operator"); - view_value[11]->labelsize(CTX.fontsize); - view_value[11]->textsize(CTX.fontsize); - view_value[11]->type(FL_HORIZONTAL); - view_value[11]->align(FL_ALIGN_RIGHT); - view_value[11]->minimum(0); - view_value[11]->step(1); - view_value[11]->maximum(3); o->end(); } // Offset and Raise @@ -2206,11 +2214,13 @@ void GUI::update_view_window(int num){ view_value[i]->maximum(v->CustomMax); } opt_view_scale_type(num, GMSH_GUI, 0); + opt_view_saturate_values(num, GMSH_GUI, 0); // intervals opt_view_nb_iso(num, GMSH_GUI, 0); opt_view_intervals_type(num, GMSH_GUI, 0); opt_view_boundary(num, GMSH_GUI, 0); + opt_view_explode(num, GMSH_GUI, 0); // offset/raise opt_view_offset0(num, GMSH_GUI, 0); diff --git a/Graphics/Draw.h b/Graphics/Draw.h index 8c4a55445b..42b8ed55d7 100644 --- a/Graphics/Draw.h +++ b/Graphics/Draw.h @@ -50,20 +50,17 @@ void Draw_Post(void); void Draw_Scales(void); void Draw_Axes (double s); void Draw_SmallAxes(void); -void Draw_Point(double *x, double *y, double *z, - double *Offset, double Raise[3][5]); -void Draw_Line (double *x, double *y, double *z, - double *Offset, double Raise[3][5]); +void Draw_Point(double *x, double *y, double *z, double Raise[3][5]); +void Draw_Line (double *x, double *y, double *z, double Raise[3][5]); void Draw_Triangle (double *x, double *y, double *z,double *n, - double *Offset, double Raise[3][5], int shade); + double Raise[3][5], int shade); void Draw_Quadrangle (double *x, double *y, double *z, double *n, - double *Offset, double Raise[3][5], int shade); -void Draw_Polygon (int n, double *x, double *y, double *z, - double *Offset, double Raise[3][5]); + double Raise[3][5], int shade); +void Draw_Polygon (int n, double *x, double *y, double *z, double Raise[3][5]); void Draw_Vector (int Type, int Fill, double x, double y, double z, double d, double dx, double dy, double dz, - double *Offset, double Raise[3][5]); + double Raise[3][5]); void Draw_Mesh_Volumes(void *a, void *b); void Draw_Mesh_Surfaces(void *a, void *b); void Draw_Mesh_Extruded_Surfaces(void *a, void *b); diff --git a/Graphics/Entity.cpp b/Graphics/Entity.cpp index 056b3856d3..81372d92cc 100644 --- a/Graphics/Entity.cpp +++ b/Graphics/Entity.cpp @@ -1,4 +1,4 @@ -// $Id: Entity.cpp,v 1.9 2001-07-30 18:34:26 geuzaine Exp $ +// $Id: Entity.cpp,v 1.10 2001-08-03 21:27:20 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -12,12 +12,9 @@ extern Context_T CTX; /* D r a w _ P o i n t */ /* ------------------------------------------------------------------------ */ -void Draw_Point (double *x, double *y, double *z, - double *Offset, double Raise[3][5]){ +void Draw_Point (double *x, double *y, double *z, double Raise[3][5]){ glBegin(GL_POINTS); - glVertex3d(x[0]+Offset[0]+Raise[0][0], - y[0]+Offset[1]+Raise[1][0], - z[0]+Offset[2]+Raise[2][0]); + glVertex3d(x[0]+Raise[0][0], y[0]+Raise[1][0], z[0]+Raise[2][0]); glEnd(); } @@ -25,15 +22,10 @@ void Draw_Point (double *x, double *y, double *z, /* D r a w _ L i n e */ /* ------------------------------------------------------------------------ */ -void Draw_Line (double *x, double *y, double *z, - double *Offset, double Raise[3][5]){ +void Draw_Line (double *x, double *y, double *z, double Raise[3][5]){ glBegin(GL_LINES); - glVertex3d(x[0]+Offset[0]+Raise[0][0], - y[0]+Offset[1]+Raise[1][0], - z[0]+Offset[2]+Raise[2][0]); - glVertex3d(x[1]+Offset[0]+Raise[0][1], - y[1]+Offset[1]+Raise[1][1], - z[1]+Offset[2]+Raise[2][1]); + glVertex3d(x[0]+Raise[0][0], y[0]+Raise[1][0], z[0]+Raise[2][0]); + glVertex3d(x[1]+Raise[0][1], y[1]+Raise[1][1], z[1]+Raise[2][1]); glEnd(); } @@ -42,7 +34,7 @@ void Draw_Line (double *x, double *y, double *z, /* ------------------------------------------------------------------------ */ void Draw_Triangle (double *x, double *y, double *z, double *n, - double *Offset, double Raise[3][5], int shade){ + double Raise[3][5], int shade){ double x1x0, y1y0, z1z0, x2x0, y2y0, z2z0, nn[3]; @@ -64,23 +56,17 @@ void Draw_Triangle (double *x, double *y, double *z, double *n, glNormal3dv(&n[0]); } - glVertex3d(x[0]+Offset[0]+Raise[0][0], - y[0]+Offset[1]+Raise[1][0], - z[0]+Offset[2]+Raise[2][0]); + glVertex3d(x[0]+Raise[0][0], y[0]+Raise[1][0], z[0]+Raise[2][0]); if (shade && n) glNormal3dv(&n[3]); - glVertex3d(x[1]+Offset[0]+Raise[0][1], - y[1]+Offset[1]+Raise[1][1], - z[1]+Offset[2]+Raise[2][1]); + glVertex3d(x[1]+Raise[0][1], y[1]+Raise[1][1], z[1]+Raise[2][1]); if (shade && n) glNormal3dv(&n[6]); - glVertex3d(x[2]+Offset[0]+Raise[0][2], - y[2]+Offset[1]+Raise[1][2], - z[2]+Offset[2]+Raise[2][2]); + glVertex3d(x[2]+Raise[0][2], y[2]+Raise[1][2], z[2]+Raise[2][2]); glEnd(); } @@ -90,7 +76,7 @@ void Draw_Triangle (double *x, double *y, double *z, double *n, /* ------------------------------------------------------------------------ */ void Draw_Quadrangle (double *x, double *y, double *z, double *n, - double *Offset, double Raise[3][5], int shade){ + double Raise[3][5], int shade){ /* I think this gives better results @@ -100,7 +86,7 @@ void Draw_Quadrangle (double *x, double *y, double *z, double *n, double y2[3]={y[2],y[3],y[0]}; double z2[3]={z[2],z[3],z[0]}; - Draw_Triangle(x,y,z,n,Offset,Raise,shade); + Draw_Triangle(x,y,z,n,Raise,shade); if (n){ double n2[9]; n2[0] = n[6]; @@ -112,10 +98,10 @@ void Draw_Quadrangle (double *x, double *y, double *z, double *n, n2[6] = n[0]; n2[7] = n[1]; n2[8] = n[2]; - Draw_Triangle(x2,y2,z2,n2,Offset,Raise,shade); + Draw_Triangle(x2,y2,z2,n2,Raise,shade); } else - Draw_Triangle(x2,y2,z2,n,Offset,Raise,shade); + Draw_Triangle(x2,y2,z2,n,Raise,shade); } @@ -124,13 +110,13 @@ void Draw_Quadrangle (double *x, double *y, double *z, double *n, /* ------------------------------------------------------------------------ */ void Draw_Polygon (int n, double *x, double *y, double *z, - double *Offset, double Raise[3][5]){ + double Raise[3][5]){ int i; glBegin(GL_POLYGON); - for(i=0;i<n;i++) glVertex3d(x[i]+Offset[0]+Raise[0][i], - y[i]+Offset[1]+Raise[1][i], - z[i]+Offset[2]+Raise[2][i]); + for(i=0;i<n;i++) glVertex3d(x[i]+Raise[0][i], + y[i]+Raise[1][i], + z[i]+Raise[2][i]); glEnd(); } @@ -141,17 +127,17 @@ void Draw_Polygon (int n, double *x, double *y, double *z, void Draw_Vector (int Type, int Fill, double x, double y, double z, double d, double dx, double dy, double dz, - double *Offset, double Raise[3][5]){ + double Raise[3][5]){ double n[3],t[3],u[3]; double l,b,c, f1, f2; if(d == 0.0) return; - if(Offset != NULL && Raise != NULL){ - x += Offset[0]+Raise[0][0] ; - y += Offset[1]+Raise[1][0] ; - z += Offset[2]+Raise[2][0] ; + if(Raise != NULL){ + x += Raise[0][0] ; + y += Raise[1][0] ; + z += Raise[2][0] ; } if(Type == DRAW_POST_SEGMENT){ diff --git a/Graphics/Geom.cpp b/Graphics/Geom.cpp index a7dd9b9fdb..afff52aad3 100644 --- a/Graphics/Geom.cpp +++ b/Graphics/Geom.cpp @@ -1,4 +1,4 @@ -// $Id: Geom.cpp,v 1.24 2001-07-26 21:26:34 geuzaine Exp $ +// $Id: Geom.cpp,v 1.25 2001-08-03 21:27:20 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -150,7 +150,7 @@ void Draw_Curve (void *a, void *b){ dd = sqrt(dv.Pos.X*dv.Pos.X+dv.Pos.Y*dv.Pos.Y+dv.Pos.Z*dv.Pos.Z); glColor4ubv((GLubyte*)&CTX.color.geom.tangents); Draw_Vector(DRAW_POST_ARROW, 0, v.Pos.X,v.Pos.Y,v.Pos.Z, - dd, dv.Pos.X,dv.Pos.Y,dv.Pos.Z, NULL,NULL); + dd, dv.Pos.X,dv.Pos.Y,dv.Pos.Z, NULL); } if(CTX.render_mode == GMSH_SELECT){ @@ -365,7 +365,7 @@ void Draw_Plane_Surface (Surface *s){ nn = sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]); glColor4ubv((GLubyte*)&CTX.color.geom.normals); Draw_Vector(DRAW_POST_ARROW, 0, (vv2.Pos.X+vv1.Pos.X)/2., (vv2.Pos.Y+vv1.Pos.Y)/2., - (vv2.Pos.Z+vv1.Pos.Z)/2., nn, n[0],n[1],n[2],NULL,NULL); + (vv2.Pos.Z+vv1.Pos.Z)/2., nn, n[0],n[1],n[2],NULL); } } @@ -468,7 +468,7 @@ void Draw_NonPlane_Surface (Surface *s){ nn = sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]); glColor4ubv((GLubyte*)&CTX.color.geom.normals); Draw_Vector(DRAW_POST_ARROW, 0, n1.Pos.X, n1.Pos.Y, n1.Pos.Z, - nn, n[0],n[1],n[2],NULL,NULL); + nn, n[0],n[1],n[2],NULL); } } diff --git a/Graphics/IsoSimplex.cpp b/Graphics/IsoSimplex.cpp index 1bd7ee030b..60c6fb0a16 100644 --- a/Graphics/IsoSimplex.cpp +++ b/Graphics/IsoSimplex.cpp @@ -141,7 +141,7 @@ void IsoSimplex( Post_View *View, int preproNormals, double *X, double *Y, double *Z, double *Val, double V, double Vmin, double Vmax, - double *Offset, double Raise[3][5]){ + double Raise[3][5]){ int nb; double Xp[6],Yp[6],Zp[6],PVals[6]; double norms[12]; @@ -196,8 +196,8 @@ void IsoSimplex( Post_View *View, if(preproNormals)return; if(nb == 3) - Draw_Triangle(Xp,Yp,Zp,norms,Offset,Raise,View->Light); + Draw_Triangle(Xp,Yp,Zp,norms,Raise,View->Light); else if(nb == 4) - Draw_Quadrangle(Xp,Yp,Zp,norms,Offset,Raise,View->Light); + Draw_Quadrangle(Xp,Yp,Zp,norms,Raise,View->Light); } diff --git a/Graphics/IsoSimplex.h b/Graphics/IsoSimplex.h index 79fc9e3f00..31eaab57bb 100644 --- a/Graphics/IsoSimplex.h +++ b/Graphics/IsoSimplex.h @@ -6,5 +6,5 @@ void IsoSimplex (Post_View *View, int preproNormals, double *X, double *Y, double *Z, double *Val, double V, double Vmin, double Vmax, - double *Offset, double Raise[3][5]); + double Raise[3][5]); #endif diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp index e92bc6a66a..0edb41b324 100644 --- a/Graphics/Mesh.cpp +++ b/Graphics/Mesh.cpp @@ -1,4 +1,4 @@ -// $Id: Mesh.cpp,v 1.36 2001-08-03 10:02:32 geuzaine Exp $ +// $Id: Mesh.cpp,v 1.37 2001-08-03 21:27:20 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -547,7 +547,7 @@ void Draw_Simplex_Surfaces (void *a, void *b){ m[1] *= CTX.mesh.normals * CTX.pixel_equiv_x/CTX.s[1] ; m[2] *= CTX.mesh.normals * 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,NULL); + Draw_Vector(DRAW_POST_ARROW, 0, Xc,Yc,Zc, mm, m[0],m[1],m[2],NULL); } diff --git a/Graphics/Post.cpp b/Graphics/Post.cpp index 42e00fcc8b..498cafeaff 100644 --- a/Graphics/Post.cpp +++ b/Graphics/Post.cpp @@ -1,4 +1,4 @@ -// $Id: Post.cpp,v 1.21 2001-07-31 06:11:24 geuzaine Exp $ +// $Id: Post.cpp,v 1.22 2001-08-03 21:27:20 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -102,9 +102,40 @@ void Free_DisplayLists(void){ } } +void Get_Coords(double Explode, double *Offset, int nbnod, + double *x1, double *y1, double *z1, + double *x2, double *y2, double *z2){ + int i; + double xc=0., yc=0., zc=0.; + + if(Explode==1){ + for(i=0; i<nbnod; i++){ + x2[i] = x1[i]+Offset[0]; + y2[i] = y1[i]+Offset[1]; + z2[i] = z1[i]+Offset[2]; + } + } + else{ + for(i=0; i<nbnod; i++){ + xc += x1[i]; + yc += y1[i]; + zc += z1[i]; + } + xc /= (double)nbnod; + yc /= (double)nbnod; + zc /= (double)nbnod; + for(i=0; i<nbnod; i++){ + x2[i] = xc + Explode * (x1[i]-xc) + Offset[0]; + y2[i] = yc + Explode * (y1[i]-yc) + Offset[1]; + z2[i] = zc + Explode * (z1[i]-zc) + Offset[2]; + } + } +} + + void Draw_Post (void) { int iView,i,j,k,nb; - double ValMin,ValMax,AbsMax; + double ValMin,ValMax,AbsMax,X[4],Y[4],Z[4]; Post_View *v; if(!Post_ViewList) return; @@ -214,60 +245,78 @@ void Draw_Post (void) { if(v->NbSP && v->DrawPoints && v->DrawScalars){ nb = List_Nbr(v->SP) / v->NbSP ; - for(i = 0 ; i < List_Nbr(v->SP) ; i+=nb) - Draw_ScalarPoint(v, ValMin, ValMax, Raise, - (double*)List_Pointer_Fast(v->SP,i), - (double*)List_Pointer_Fast(v->SP,i+1), - (double*)List_Pointer_Fast(v->SP,i+2), + for(i = 0 ; i < List_Nbr(v->SP) ; i+=nb){ + Get_Coords(1., v->Offset, 1, + (double*)List_Pointer_Fast(v->SP,i), + (double*)List_Pointer_Fast(v->SP,i+1), + (double*)List_Pointer_Fast(v->SP,i+2), + X, Y, Z); + Draw_ScalarPoint(v, ValMin, ValMax, Raise, X, Y, Z, (double*)List_Pointer_Fast(v->SP,i+3)); + } } if(v->NbVP && v->DrawPoints && v->DrawVectors){ nb = List_Nbr(v->VP) / v->NbVP ; - for(i = 0 ; i < List_Nbr(v->VP) ; i+=nb) - Draw_VectorPoint(v, ValMin, ValMax, Raise, - (double*)List_Pointer_Fast(v->VP,i), - (double*)List_Pointer_Fast(v->VP,i+1), - (double*)List_Pointer_Fast(v->VP,i+2), + for(i = 0 ; i < List_Nbr(v->VP) ; i+=nb){ + Get_Coords(1., v->Offset, 1, + (double*)List_Pointer_Fast(v->VP,i), + (double*)List_Pointer_Fast(v->VP,i+1), + (double*)List_Pointer_Fast(v->VP,i+2), + X, Y, Z); + Draw_VectorPoint(v, ValMin, ValMax, Raise, X, Y, Z, (double*)List_Pointer_Fast(v->VP,i+3)); + } } if(v->NbTP && v->DrawPoints && v->DrawTensors){ nb = List_Nbr(v->TP) / v->NbTP ; - for(i = 0 ; i < List_Nbr(v->TP) ; i+=nb) - Draw_TensorPoint(v, ValMin, ValMax, Raise, - (double*)List_Pointer_Fast(v->TP,i), - (double*)List_Pointer_Fast(v->TP,i+1), - (double*)List_Pointer_Fast(v->TP,i+2), + for(i = 0 ; i < List_Nbr(v->TP) ; i+=nb){ + Get_Coords(1., v->Offset, 1, + (double*)List_Pointer_Fast(v->TP,i), + (double*)List_Pointer_Fast(v->TP,i+1), + (double*)List_Pointer_Fast(v->TP,i+2), + X, Y, Z); + Draw_TensorPoint(v, ValMin, ValMax, Raise, X, Y, Z, (double*)List_Pointer_Fast(v->TP,i+3)); + } } // Lines if(v->NbSL && v->DrawLines && v->DrawScalars){ nb = List_Nbr(v->SL) / v->NbSL ; - for(i = 0 ; i < List_Nbr(v->SL) ; i+=nb) - Draw_ScalarLine(v, ValMin, ValMax, Raise, - (double*)List_Pointer_Fast(v->SL,i), - (double*)List_Pointer_Fast(v->SL,i+2), - (double*)List_Pointer_Fast(v->SL,i+4), + for(i = 0 ; i < List_Nbr(v->SL) ; i+=nb){ + Get_Coords(v->Explode, v->Offset, 2, + (double*)List_Pointer_Fast(v->SL,i), + (double*)List_Pointer_Fast(v->SL,i+2), + (double*)List_Pointer_Fast(v->SL,i+4), + X, Y, Z); + Draw_ScalarLine(v, ValMin, ValMax, Raise, X, Y, Z, (double*)List_Pointer_Fast(v->SL,i+6)); + } } if(v->NbVL && v->DrawLines && v->DrawVectors){ nb = List_Nbr(v->VL) / v->NbVL ; - for(i = 0 ; i < List_Nbr(v->VL) ; i+=nb) - Draw_VectorLine(v, ValMin, ValMax, Raise, - (double*)List_Pointer_Fast(v->VL,i), - (double*)List_Pointer_Fast(v->VL,i+2), - (double*)List_Pointer_Fast(v->VL,i+4), + for(i = 0 ; i < List_Nbr(v->VL) ; i+=nb){ + Get_Coords(v->Explode, v->Offset, 2, + (double*)List_Pointer_Fast(v->VL,i), + (double*)List_Pointer_Fast(v->VL,i+2), + (double*)List_Pointer_Fast(v->VL,i+4), + X, Y, Z); + Draw_VectorLine(v, ValMin, ValMax, Raise, X, Y, Z, (double*)List_Pointer_Fast(v->VL,i+6)); + } } if(v->NbTL && v->DrawLines && v->DrawTensors){ nb = List_Nbr(v->TL) / v->NbTL ; - for(i = 0 ; i < List_Nbr(v->TL) ; i+=nb) - Draw_VectorLine(v, ValMin, ValMax, Raise, - (double*)List_Pointer_Fast(v->TL,i), - (double*)List_Pointer_Fast(v->TL,i+2), - (double*)List_Pointer_Fast(v->TL,i+4), + for(i = 0 ; i < List_Nbr(v->TL) ; i+=nb){ + Get_Coords(v->Explode, v->Offset, 2, + (double*)List_Pointer_Fast(v->TL,i), + (double*)List_Pointer_Fast(v->TL,i+2), + (double*)List_Pointer_Fast(v->TL,i+4), + X, Y, Z); + Draw_TensorLine(v, ValMin, ValMax, Raise, X, Y, Z, (double*)List_Pointer_Fast(v->TL,i+6)); + } } // Triangles @@ -276,37 +325,49 @@ void Draw_Post (void) { nb = List_Nbr(v->ST) / v->NbST ; if(v->Light && v->SmoothNormals && v->Changed && v->IntervalsType != DRAW_POST_ISO){ Msg(DEBUG, "Preprocessing of triangle normals in view %d", v->Num); - for(i = 0 ; i < List_Nbr(v->ST) ; i+=nb) - Draw_ScalarTriangle(v, 1, ValMin, ValMax, Raise, - (double*)List_Pointer_Fast(v->ST,i), - (double*)List_Pointer_Fast(v->ST,i+3), - (double*)List_Pointer_Fast(v->ST,i+6), + for(i = 0 ; i < List_Nbr(v->ST) ; i+=nb){ + Get_Coords(v->Explode, v->Offset, 3, + (double*)List_Pointer_Fast(v->ST,i), + (double*)List_Pointer_Fast(v->ST,i+3), + (double*)List_Pointer_Fast(v->ST,i+6), + X, Y, Z); + Draw_ScalarTriangle(v, 1, ValMin, ValMax, Raise, X, Y, Z, (double*)List_Pointer_Fast(v->ST,i+9)); + } } - for(i = 0 ; i < List_Nbr(v->ST) ; i+=nb) - Draw_ScalarTriangle(v, 0, ValMin, ValMax, Raise, - (double*)List_Pointer_Fast(v->ST,i), - (double*)List_Pointer_Fast(v->ST,i+3), - (double*)List_Pointer_Fast(v->ST,i+6), + for(i = 0 ; i < List_Nbr(v->ST) ; i+=nb){ + Get_Coords(v->Explode, v->Offset, 3, + (double*)List_Pointer_Fast(v->ST,i), + (double*)List_Pointer_Fast(v->ST,i+3), + (double*)List_Pointer_Fast(v->ST,i+6), + X, Y, Z); + Draw_ScalarTriangle(v, 0, ValMin, ValMax, Raise, X, Y, Z, (double*)List_Pointer_Fast(v->ST,i+9)); + } } if(v->NbVT && v->DrawTriangles && v->DrawVectors){ nb = List_Nbr(v->VT) / v->NbVT ; - for(i = 0 ; i < List_Nbr(v->VT) ; i+=nb) - Draw_VectorTriangle(v, ValMin, ValMax, Raise, - (double*)List_Pointer_Fast(v->VT,i), - (double*)List_Pointer_Fast(v->VT,i+3), - (double*)List_Pointer_Fast(v->VT,i+6), + for(i = 0 ; i < List_Nbr(v->VT) ; i+=nb){ + Get_Coords(v->Explode, v->Offset, 3, + (double*)List_Pointer_Fast(v->VT,i), + (double*)List_Pointer_Fast(v->VT,i+3), + (double*)List_Pointer_Fast(v->VT,i+6), + X, Y, Z); + Draw_VectorTriangle(v, ValMin, ValMax, Raise, X, Y, Z, (double*)List_Pointer_Fast(v->VT,i+9)); + } } if(v->NbTT && v->DrawTriangles && v->DrawTensors){ nb = List_Nbr(v->TT) / v->NbTT ; - for(i = 0 ; i < List_Nbr(v->TT) ; i+=nb) - Draw_TensorTriangle(v, ValMin, ValMax, Raise, - (double*)List_Pointer_Fast(v->TT,i), - (double*)List_Pointer_Fast(v->TT,i+3), - (double*)List_Pointer_Fast(v->TT,i+6), + for(i = 0 ; i < List_Nbr(v->TT) ; i+=nb){ + Get_Coords(v->Explode, v->Offset, 3, + (double*)List_Pointer_Fast(v->TT,i), + (double*)List_Pointer_Fast(v->TT,i+3), + (double*)List_Pointer_Fast(v->TT,i+6), + X, Y, Z); + Draw_TensorTriangle(v, ValMin, ValMax, Raise, X, Y, Z, (double*)List_Pointer_Fast(v->TT,i+9)); + } } // Tetrahedra @@ -315,37 +376,49 @@ void Draw_Post (void) { nb = List_Nbr(v->SS) / v->NbSS ; if(v->Light && v->SmoothNormals && v->Changed && v->IntervalsType != DRAW_POST_ISO){ Msg(DEBUG, "Preprocessing of tets normals in view %d", v->Num); - for(i = 0 ; i < List_Nbr(v->SS) ; i+=nb) - Draw_ScalarTetrahedron(v, 1, ValMin, ValMax, Raise, - (double*)List_Pointer_Fast(v->SS,i), - (double*)List_Pointer_Fast(v->SS,i+4), - (double*)List_Pointer_Fast(v->SS,i+8), + for(i = 0 ; i < List_Nbr(v->SS) ; i+=nb){ + Get_Coords(v->Explode, v->Offset, 4, + (double*)List_Pointer_Fast(v->SS,i), + (double*)List_Pointer_Fast(v->SS,i+4), + (double*)List_Pointer_Fast(v->SS,i+8), + X, Y, Z); + Draw_ScalarTetrahedron(v, 1, ValMin, ValMax, Raise, X, Y, Z, (double*)List_Pointer_Fast(v->SS,i+12)); + } } - for(i = 0 ; i < List_Nbr(v->SS) ; i+=nb) - Draw_ScalarTetrahedron(v, 0, ValMin, ValMax, Raise, - (double*)List_Pointer_Fast(v->SS,i), - (double*)List_Pointer_Fast(v->SS,i+4), - (double*)List_Pointer_Fast(v->SS,i+8), + for(i = 0 ; i < List_Nbr(v->SS) ; i+=nb){ + Get_Coords(v->Explode, v->Offset, 4, + (double*)List_Pointer_Fast(v->SS,i), + (double*)List_Pointer_Fast(v->SS,i+4), + (double*)List_Pointer_Fast(v->SS,i+8), + X, Y, Z); + Draw_ScalarTetrahedron(v, 0, ValMin, ValMax, Raise, X, Y, Z, (double*)List_Pointer_Fast(v->SS,i+12)); + } } if(v->NbVS && v->DrawTetrahedra && v->DrawVectors){ nb = List_Nbr(v->VS) / v->NbVS ; - for(i = 0 ; i < List_Nbr(v->VS) ; i+=nb) - Draw_VectorTetrahedron(v, ValMin, ValMax, Raise, - (double*)List_Pointer_Fast(v->VS,i), - (double*)List_Pointer_Fast(v->VS,i+4), - (double*)List_Pointer_Fast(v->VS,i+8), + for(i = 0 ; i < List_Nbr(v->VS) ; i+=nb){ + Get_Coords(v->Explode, v->Offset, 4, + (double*)List_Pointer_Fast(v->VS,i), + (double*)List_Pointer_Fast(v->VS,i+4), + (double*)List_Pointer_Fast(v->VS,i+8), + X, Y, Z); + Draw_VectorTetrahedron(v, ValMin, ValMax, Raise, X, Y, Z, (double*)List_Pointer_Fast(v->VS,i+12)); + } } if(v->NbTS && v->DrawTetrahedra && v->DrawTensors){ nb = List_Nbr(v->TS) / v->NbTS ; - for(i = 0 ; i < List_Nbr(v->TS) ; i+=nb) - Draw_TensorTetrahedron(v, ValMin, ValMax, Raise, - (double*)List_Pointer_Fast(v->TS,i), - (double*)List_Pointer_Fast(v->TS,i+4), - (double*)List_Pointer_Fast(v->TS,i+8), + for(i = 0 ; i < List_Nbr(v->TS) ; i+=nb){ + Get_Coords(v->Explode, v->Offset, 4, + (double*)List_Pointer_Fast(v->TS,i), + (double*)List_Pointer_Fast(v->TS,i+4), + (double*)List_Pointer_Fast(v->TS,i+8), + X, Y, Z); + Draw_TensorTetrahedron(v, ValMin, ValMax, Raise, X, Y, Z, (double*)List_Pointer_Fast(v->TS,i+12)); + } } diff --git a/Graphics/PostSimplex.cpp b/Graphics/PostSimplex.cpp index b5b9b9197e..1121693de4 100644 --- a/Graphics/PostSimplex.cpp +++ b/Graphics/PostSimplex.cpp @@ -1,4 +1,4 @@ -// $Id: PostSimplex.cpp,v 1.25 2001-08-03 19:40:01 geuzaine Exp $ +// $Id: PostSimplex.cpp,v 1.26 2001-08-03 21:27:20 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -11,32 +11,30 @@ extern Context_T CTX; -void Draw_Simplex(int dim, double *X, double *Y, double *Z, - double *Offset, double Raise[3][5]){ +void Draw_Simplex(int nbnod, double *X, double *Y, double *Z, + double Raise[3][5]){ int k; double xx[4], yy[4], zz[4]; glColor4ubv((GLubyte*)&CTX.color.fg); - switch(dim){ - case 0 : - Draw_Point(X,Y,Z,Offset,Raise); - break; + switch(nbnod){ case 1 : - Draw_Line(X,Y,Z,Offset,Raise); + Draw_Point(X,Y,Z,Raise); break; case 2 : + Draw_Line(X,Y,Z,Raise); + break; + case 3 : glBegin(GL_LINE_LOOP); for(k=0 ; k<3 ; k++) - glVertex3d(X[k]+Offset[0]+Raise[0][k], - Y[k]+Offset[1]+Raise[1][k], - Z[k]+Offset[2]+Raise[2][k]); + glVertex3d(X[k]+Raise[0][k], Y[k]+Raise[1][k], Z[k]+Raise[2][k]); glEnd(); break; - case 3 : + case 4 : for(k=0 ; k<4 ; k++){ - xx[k] = X[k]+Offset[0]+Raise[0][k] ; - yy[k] = Y[k]+Offset[1]+Raise[1][k] ; - zz[k] = Z[k]+Offset[2]+Raise[2][k] ; + xx[k] = X[k]+Raise[0][k] ; + yy[k] = Y[k]+Raise[1][k] ; + zz[k] = Z[k]+Raise[2][k] ; } glBegin(GL_LINES); glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[1], yy[1], zz[1]); @@ -72,19 +70,17 @@ void Draw_ScalarPoint(Post_View *View, RaiseFill(0, d, ValMin, Raise); - if(View->ShowElement) Draw_Simplex(0,X,Y,Z,View->Offset,Raise); + if(View->ShowElement) Draw_Simplex(1,X,Y,Z,Raise); if(d>=ValMin && d<=ValMax){ Palette2(View,ValMin,ValMax,d); if(View->IntervalsType == DRAW_POST_NUMERIC){ - glRasterPos3d(X[0]+Raise[0][0]+View->Offset[0], - Y[0]+Raise[1][0]+View->Offset[1], - Z[0]+Raise[2][0]+View->Offset[2]); + glRasterPos3d(X[0]+Raise[0][0], Y[0]+Raise[1][0], Z[0]+Raise[2][0]); sprintf(Num, View->Format, d); Draw_String(Num); } else - Draw_Point(X,Y,Z,View->Offset,Raise); + Draw_Point(X,Y,Z,Raise); } } @@ -126,7 +122,7 @@ void Draw_ScalarLine(Post_View *View, for(k=0 ; k<2 ; k++) RaiseFill(k, Val[k], ValMin, Raise); - if(View->ShowElement) Draw_Simplex(1,X,Y,Z,View->Offset,Raise); + if(View->ShowElement) Draw_Simplex(2,X,Y,Z,Raise); if(View->IntervalsType == DRAW_POST_NUMERIC){ @@ -135,9 +131,9 @@ void Draw_ScalarLine(Post_View *View, if(d >= ValMin && d <= ValMax){ Palette2(View,ValMin,ValMax,d); sprintf(Num, View->Format, d); - glRasterPos3d((X[0]+Raise[0][0] + X[1]+Raise[0][1])/2. + View->Offset[0], - (Y[0]+Raise[1][0] + Y[1]+Raise[1][1])/2. + View->Offset[1], - (Z[0]+Raise[2][0] + Z[1]+Raise[2][1])/2. + View->Offset[2]); + glRasterPos3d((X[0]+Raise[0][0] + X[1]+Raise[0][1])/2., + (Y[0]+Raise[1][0] + Y[1]+Raise[1][1])/2., + (Z[0]+Raise[2][0] + Z[1]+Raise[2][1])/2.); Draw_String(Num); } @@ -150,13 +146,9 @@ void Draw_ScalarLine(Post_View *View, Val[1] >= ValMin && Val[1] <= ValMax){ glBegin(GL_LINES); Palette2(View,ValMin,ValMax,Val[0]); - glVertex3d(X[0]+View->Offset[0]+Raise[0][0], - Y[0]+View->Offset[1]+Raise[1][0], - Z[0]+View->Offset[2]+Raise[2][0]); + glVertex3d(X[0]+Raise[0][0], Y[0]+Raise[1][0], Z[0]+Raise[2][0]); Palette2(View,ValMin,ValMax,Val[1]); - glVertex3d(X[1]+View->Offset[0]+Raise[0][1], - Y[1]+View->Offset[1]+Raise[1][1], - Z[1]+View->Offset[2]+Raise[2][1]); + glVertex3d(X[1]+Raise[0][1], Y[1]+Raise[1][1], Z[1]+Raise[2][1]); glEnd(); } else{ @@ -174,7 +166,7 @@ void Draw_ScalarLine(Post_View *View, ValMin,ValMax,Xp,Yp,Zp,&nb,value); if(nb == 2){ for(i=0;i<2;i++) RaiseFill(i,value[i],ValMin,Raise); - Draw_Line(Xp,Yp,Zp,View->Offset,Raise); + Draw_Line(Xp,Yp,Zp,Raise); } } else{ @@ -183,7 +175,7 @@ void Draw_ScalarLine(Post_View *View, thev, ValMin,ValMax,Xp,Yp,Zp,&nb); if(nb){ RaiseFill(0,thev,ValMin,Raise); - Draw_Point(Xp,Yp,Zp,View->Offset,Raise); + Draw_Point(Xp,Yp,Zp,Raise); } } } @@ -279,7 +271,7 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals, if(preproNormals) return; - if(View->ShowElement) Draw_Simplex(2,X,Y,Z,View->Offset,Raise); + if(View->ShowElement) Draw_Simplex(3,X,Y,Z,Raise); if(View->IntervalsType == DRAW_POST_NUMERIC){ @@ -287,12 +279,9 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals, if(d >= ValMin && d <= ValMax){ Palette2(View,ValMin,ValMax,d); sprintf(Num, View->Format, d); - glRasterPos3d( (X[0]+Raise[0][0] + X[1]+Raise[0][1] + X[2]+Raise[0][2])/3. + - View->Offset[0], - (Y[0]+Raise[1][0] + Y[1]+Raise[1][1] + Y[2]+Raise[1][2])/3. + - View->Offset[1], - (Z[0]+Raise[2][0] + Z[1]+Raise[2][1] + Z[2]+Raise[2][2])/3. + - View->Offset[2] ); + glRasterPos3d( (X[0]+Raise[0][0] + X[1]+Raise[0][1] + X[2]+Raise[0][2])/3., + (Y[0]+Raise[1][0] + Y[1]+Raise[1][1] + Y[2]+Raise[1][2])/3., + (Z[0]+Raise[2][0] + Z[1]+Raise[2][1] + Z[2]+Raise[2][2])/3.); Draw_String(Num); } @@ -306,19 +295,13 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals, glBegin(GL_TRIANGLES); Palette2(View,ValMin,ValMax,Val[0]); glNormal3dv(&norms[0]); - glVertex3d(X[0]+View->Offset[0]+Raise[0][0], - Y[0]+View->Offset[1]+Raise[1][0], - Z[0]+View->Offset[2]+Raise[2][0]); + glVertex3d(X[0]+Raise[0][0], Y[0]+Raise[1][0], Z[0]+Raise[2][0]); Palette2(View,ValMin,ValMax,Val[1]); glNormal3dv(&norms[3]); - glVertex3d(X[1]+View->Offset[0]+Raise[0][1], - Y[1]+View->Offset[1]+Raise[1][1], - Z[1]+View->Offset[2]+Raise[2][1]); + glVertex3d(X[1]+Raise[0][1], Y[1]+Raise[1][1], Z[1]+Raise[2][1]); Palette2(View,ValMin,ValMax,Val[2]); glNormal3dv(&norms[6]); - glVertex3d(X[2]+View->Offset[0]+Raise[0][2], - Y[2]+View->Offset[1]+Raise[1][2], - Z[2]+View->Offset[2]+Raise[2][2]); + glVertex3d(X[2]+Raise[0][2], Y[2]+Raise[1][2], Z[2]+Raise[2][2]); glEnd(); } else{ @@ -330,9 +313,7 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals, for(i=0 ; i<nb ; i++){ Palette2(View,ValMin,ValMax,value[i]); RaiseFill(i,value[i],ValMin,Raise); - glVertex3d(Xp[i]+View->Offset[0]+Raise[0][i], - Yp[i]+View->Offset[1]+Raise[1][i], - Zp[i]+View->Offset[2]+Raise[2][i]); + glVertex3d(Xp[i]+Raise[0][i], Yp[i]+Raise[1][i], Zp[i]+Raise[2][i]); } glEnd(); } @@ -349,7 +330,7 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals, Xp,Yp,Zp,&nb,value); if(nb >= 3){ for(i=0 ; i<nb ; i++) RaiseFill(i,value[i],ValMin,Raise); - Draw_Polygon(nb,Xp,Yp,Zp,View->Offset,Raise); + Draw_Polygon(nb,Xp,Yp,Zp,Raise); } } else{ @@ -359,7 +340,7 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals, thev, ValMin,ValMax,Xp,Yp,Zp,&nb); if(nb == 2){ for(i=0 ; i<2 ; i++) RaiseFill(i,thev,ValMin,Raise); - Draw_Line(Xp,Yp,Zp,View->Offset,Raise); + Draw_Line(Xp,Yp,Zp,Raise); } } } @@ -413,7 +394,7 @@ void Draw_ScalarTetrahedron(Post_View *View, int preproNormals, for(k=0 ; k<4 ; k++) RaiseFill(k, Val[k], ValMin, Raise); - if(!preproNormals && View->ShowElement) Draw_Simplex(3,X,Y,Z,View->Offset,Raise); + if(!preproNormals && View->ShowElement) Draw_Simplex(4,X,Y,Z,Raise); if(!preproNormals && View->IntervalsType == DRAW_POST_NUMERIC){ @@ -422,11 +403,11 @@ void Draw_ScalarTetrahedron(Post_View *View, int preproNormals, Palette2(View,ValMin,ValMax,d); sprintf(Num, View->Format, d); glRasterPos3d(0.25 * (X[0]+Raise[0][0] + X[1]+Raise[0][1] + - X[2]+Raise[0][2] + X[3]+Raise[0][3]) + View->Offset[0], + X[2]+Raise[0][2] + X[3]+Raise[0][3]), 0.25 * (Y[0]+Raise[1][0] + Y[1]+Raise[1][1] + - Y[2]+Raise[1][2] + Y[3]+Raise[1][3]) + View->Offset[1], + Y[2]+Raise[1][2] + Y[3]+Raise[1][3]), 0.25 * (Z[0]+Raise[2][0] + Z[1]+Raise[2][1] + - Z[2]+Raise[2][2] + Z[3]+Raise[2][3]) + View->Offset[2]); + Z[2]+Raise[2][2] + Z[3]+Raise[2][3])); Draw_String(Num); } @@ -436,7 +417,7 @@ void Draw_ScalarTetrahedron(Post_View *View, int preproNormals, if(!preproNormals) Palette(View,View->NbIso,k); IsoSimplex(View, preproNormals, X, Y, Z, Val, View->GVFI(ValMin,ValMax,View->NbIso,k), - ValMin, ValMax, View->Offset, Raise); + ValMin, ValMax, Raise); } } @@ -467,9 +448,9 @@ void Draw_VectorSimplex(int nbnod, Post_View *View, fact = View->ArrowScale/50. ; for(k=0 ; k<nbnod ; k++){ - xx[k] = X[k] + fact * Val[k][0] + Raise[0][k] + View->Offset[0]; - yy[k] = Y[k] + fact * Val[k][1] + Raise[1][k] + View->Offset[1]; - zz[k] = Z[k] + fact * Val[k][2] + Raise[2][k] + View->Offset[2]; + xx[k] = X[k] + fact * Val[k][0] + Raise[0][k]; + yy[k] = Y[k] + fact * Val[k][1] + Raise[1][k]; + zz[k] = Z[k] + fact * Val[k][2] + Raise[2][k]; } switch(nbnod){ @@ -486,9 +467,9 @@ void Draw_VectorSimplex(int nbnod, Post_View *View, dz = V[3*(View->TimeStep-j)+2]; dd = sqrt(dx*dx+dy*dy+dz*dz); Palette2(View,ValMin,ValMax,dd); - glVertex3d(X[0] + fact*dx + Raise[0][0] + View->Offset[0], - Y[0] + fact*dy + Raise[1][0] + View->Offset[1], - Z[0] + fact*dz + Raise[2][0] + View->Offset[2]); + glVertex3d(X[0] + fact*dx + Raise[0][0], + Y[0] + fact*dy + Raise[1][0], + Z[0] + fact*dz + Raise[2][0]); } glEnd(); } @@ -500,7 +481,7 @@ void Draw_VectorSimplex(int nbnod, Post_View *View, return; } - if(View->ShowElement) Draw_Simplex(nbnod-1,X,Y,Z,View->Offset,Raise); + if(View->ShowElement) Draw_Simplex(nbnod,X,Y,Z,Raise); if(View->ArrowLocation == DRAW_POST_LOCATE_COG || View->IntervalsType == DRAW_POST_NUMERIC){ @@ -516,9 +497,7 @@ void Draw_VectorSimplex(int nbnod, Post_View *View, if(dd!=0.0 && dd>=ValMin && dd<=ValMax){ Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,dd)); if(View->IntervalsType == DRAW_POST_NUMERIC){ - glRasterPos3d(xc + View->Offset[0], - yc + View->Offset[1], - zc + View->Offset[2]); + glRasterPos3d(xc, yc, zc); sprintf(Num, View->Format, dd); Draw_String(Num); } @@ -531,8 +510,7 @@ void Draw_VectorSimplex(int nbnod, Post_View *View, } RaiseFill(0, dd, ValMin, Raise); Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, - xc, yc, zc, fact*dd, fact*dx, fact*dy, fact*dz, - View->Offset, Raise); + xc, yc, zc, fact*dd, fact*dx, fact*dy, fact*dz, Raise); } } } @@ -549,8 +527,7 @@ void Draw_VectorSimplex(int nbnod, Post_View *View, RaiseFill(0, d[k], ValMin, Raise); Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, X[k], Y[k], Z[k], - fact*d[k], fact*Val[k][0], fact*Val[k][1], fact*Val[k][2], - View->Offset, Raise); + fact*d[k], fact*Val[k][0], fact*Val[k][1], fact*Val[k][2], Raise); } } } -- GitLab