diff --git a/Graphics/Graph2D.cpp b/Graphics/Graph2D.cpp index ae6e9664593d807a10a53b910d1d0897d9b3420b..e42d09529e0ab314ab1c30d70756fc49e9cce72f 100644 --- a/Graphics/Graph2D.cpp +++ b/Graphics/Graph2D.cpp @@ -1,4 +1,4 @@ -// $Id: Graph2D.cpp,v 1.9 2001-11-05 08:37:43 geuzaine Exp $ +// $Id: Graph2D.cpp,v 1.10 2001-11-05 09:27:28 geuzaine Exp $ #include "Gmsh.h" #include "GmshUI.h" @@ -15,6 +15,26 @@ extern Context_T CTX; 2D graphics (gnuplot style) ------------------------------------------------------------------------ */ +static void getval(Post_View *v, int i, int j, double *p1, double *p2, + double *Abs, double *Val){ + int k; + if(v->Type==DRAW_POST_2D_SPACE){ + for(k=0;k<3;k++){ + List_Read(v->SP,j+k,&p2[k]); + if(j) p1[k] = p2[k]-p1[k]; + } + *Abs += sqrt (p1[0] * p1[0] + p1[1] * p1[1] + p1[2] * p1[2]); + for(k=0;k<3;k++){ + p1[k] = p2[k]; + } + *Val = ((double*)List_Pointer_Fast(v->SP,j+3))[v->TimeStep]; + } + else{ + *Abs = *(double*)List_Pointer_Fast(v->Time,j); + *Val = ((double*)List_Pointer_Fast(v->SP,i+3))[j]; + } +} + static void addval(Post_View *v, double Abs, double Val, double AbsMin, double AbsMax, double ValMin, double ValMax, double xtop, double width, double ybot, double height, @@ -60,7 +80,8 @@ static void Draw_Graph2D(Post_View *v, double xtop = xx; double ytop = CTX.viewport[3]-yy; double ybot = ytop-height; - double ValMin, ValMax, AbsMin, AbsMax; + double Abs, Val, ValMin, ValMax, AbsMin, AbsMax; + double p1[3], p2[3]; if(!v->TransparentScale){ glColor4ubv((GLubyte*)&CTX.color.bg); @@ -256,46 +277,31 @@ static void Draw_Graph2D(Post_View *v, j_max = v->TimeStep+1; } - double Abs = 0., Val = 0., p1[3]={0.,0.,0.}, p2[3]; -#define GETVAL \ - if(v->Type==DRAW_POST_2D_SPACE){ \ - for(k=0;k<3;k++){ \ - List_Read(v->SP,j+k,&p2[k]); \ - if(j) p1[k] = p2[k]-p1[k]; \ - } \ - Abs += sqrt (p1[0] * p1[0] + p1[1] * p1[1] + p1[2] * p1[2]); \ - for(k=0;k<3;k++){ \ - p1[k] = p2[k]; \ - } \ - Val = ((double*)List_Pointer_Fast(v->SP,j+3))[v->TimeStep]; \ - } \ - else{ \ - Abs = *(double*)List_Pointer_Fast(v->Time,j); \ - Val = ((double*)List_Pointer_Fast(v->SP,i+3))[j]; \ - } - for(i=0; i<i_max; i+=i_inc){ if(v->IntervalsType == DRAW_POST_ISO || v->IntervalsType == DRAW_POST_DISCRETE || v->IntervalsType == DRAW_POST_NUMERIC){ glBegin(GL_POINTS); + Abs = Val = p1[0] = p1[1] = p1[2] = 0.; for(j=0; j<j_max; j+=j_inc){ - GETVAL; + getval(v,i,j,p1,p2,&Abs,&Val); addval(v,Abs,Val,AbsMin,AbsMax,ValMin,ValMax,xtop,width,ybot,height,0); } glEnd(); } if(v->IntervalsType == DRAW_POST_NUMERIC){ + Abs = Val = p1[0] = p1[1] = p1[2] = 0.; for(j=0; j<j_max; j+=j_inc){ - GETVAL; + getval(v,i,j,p1,p2,&Abs,&Val); addval(v,Abs,Val,AbsMin,AbsMax,ValMin,ValMax,xtop,width,ybot,height,1); } } if(v->IntervalsType == DRAW_POST_DISCRETE || v->IntervalsType == DRAW_POST_CONTINUOUS){ glBegin(GL_LINE_STRIP); + Abs = Val = p1[0] = p1[1] = p1[2] = 0.; for(j=0; j<j_max; j+=j_inc){ - GETVAL; + getval(v,i,j,p1,p2,&Abs,&Val); addval(v,Abs,Val,AbsMin,AbsMax,ValMin,ValMax,xtop,width,ybot,height,0); } glEnd();