diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index 45a655f17858594ec94325ca92e3660f54b3a93a..7ea16af69ff721f500c415076319b9fb637456e2 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -1,4 +1,4 @@ -// $Id: GUI.cpp,v 1.293 2004-04-24 06:13:45 geuzaine Exp $ +// $Id: GUI.cpp,v 1.294 2004-04-26 19:54:16 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -2374,9 +2374,6 @@ void GUI::create_option_window() void GUI::update_view_window(int num) { - int i; - double val; - if(num < 0 || num >= List_Nbr(CTX.post.list)) return; @@ -2449,7 +2446,7 @@ void GUI::update_view_window(int num) int range_type = (int)opt_view_range_type(num, GMSH_GUI, 0); opt_view_custom_min(num, GMSH_GUI, 0); opt_view_custom_max(num, GMSH_GUI, 0); - for(i = 31; i <= 32; i++) { + for(int i = 31; i <= 32; i++) { view_value[i]->minimum(v->CustomMin); view_value[i]->maximum(v->CustomMax); if(range_type == DRAW_POST_RANGE_CUSTOM) @@ -2464,14 +2461,22 @@ void GUI::update_view_window(int num) opt_view_offset0(num, GMSH_GUI, 0); opt_view_offset1(num, GMSH_GUI, 0); opt_view_offset2(num, GMSH_GUI, 0); + double val1 = 10. * CTX.lc; + for(int i = 40; i <= 42; i++) { + view_value[i]->step(val1/100.); + view_value[i]->minimum(-val1); + view_value[i]->maximum(val1); + } opt_view_raise0(num, GMSH_GUI, 0); opt_view_raise1(num, GMSH_GUI, 0); opt_view_raise2(num, GMSH_GUI, 0); - val = 10. * CTX.lc; - for(i = 40; i <= 45; i++) { - view_value[i]->step(val, 1000); - view_value[i]->minimum(-val); - view_value[i]->maximum(val); + double maxval = MAX(fabs(v->Min), fabs(v->Max)); + if(!maxval) maxval = 1.; + double val2 = 2. * CTX.lc / maxval; + for(int i = 43; i <= 45; i++) { + view_value[i]->step(val2/100.); + view_value[i]->minimum(-val2); + view_value[i]->maximum(val2); } // timestep diff --git a/Graphics/Draw.h b/Graphics/Draw.h index ab050bc1632a5c0977c16edf377fdc0f64cffb69..f0506ae03d96670d06d87d4b4af09c776706c86f 100644 --- a/Graphics/Draw.h +++ b/Graphics/Draw.h @@ -42,7 +42,6 @@ void set_r(int i, double val); void set_t(int i, double val); void set_s(int i, double val); -void RaiseFill(int i, double Val, double ValMin, double Raise[3][8]); void PaletteContinuous(Post_View * View, double min, double max, double val); void PaletteContinuousLinear(Post_View * v, double min, double max, double val); void PaletteDiscrete(Post_View * View, int nbi, int i); @@ -72,8 +71,10 @@ void Draw_Axes(double s); void Draw_SmallAxes(void); void Draw_Sphere(double size, double x, double y, double z, int light); void Draw_Cylinder(double width, double *x, double *y, double *z, int light); -void Draw_Point(int type, double size, double *x, double *y, double *z, double Raise[3][8], int light); -void Draw_Line(int type, double width, double *x, double *y, double *z, double Raise[3][8], int light); +void Draw_Point(int type, double size, double *x, double *y, double *z, + double Raise[3][8], int light); +void Draw_Line(int type, double width, double *x, double *y, double *z, + double Raise[3][8], int light); void Draw_Triangle(double *x, double *y, double *z,double *n, double Raise[3][8], int light); void Draw_Quadrangle(double *x, double *y, double *z, double *n, @@ -99,76 +100,76 @@ void Draw_Prism_Volume(void *a, void *b); void Draw_Pyramid_Volume(void *a, void *b); void Draw_ScalarPoint(Post_View *View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_VectorPoint(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_TensorPoint(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_ScalarLine(Post_View *View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_VectorLine(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_TensorLine(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_ScalarTriangle(Post_View *View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_VectorTriangle(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_TensorTriangle(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_ScalarTetrahedron(Post_View *View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_VectorTetrahedron(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_TensorTetrahedron(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_ScalarQuadrangle(Post_View *View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_VectorQuadrangle(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_TensorQuadrangle(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_ScalarHexahedron(Post_View *View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_VectorHexahedron(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_TensorHexahedron(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_ScalarPrism(Post_View *View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_VectorPrism(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_TensorPrism(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_ScalarPyramid(Post_View *View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_VectorPyramid(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); void Draw_TensorPyramid(Post_View *View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V); double GiveValueFromIndex_Lin(double ValMin, double ValMax, int NbIso, int Iso); diff --git a/Graphics/Iso.cpp b/Graphics/Iso.cpp index 7e67e0e5684c5a0527286d2d217c1cc068815611..230eb3bff31eef30ad2c432baf4dd08b9106df74 100644 --- a/Graphics/Iso.cpp +++ b/Graphics/Iso.cpp @@ -1,4 +1,4 @@ -// $Id: Iso.cpp,v 1.20 2004-02-07 01:40:19 geuzaine Exp $ +// $Id: Iso.cpp,v 1.21 2004-04-26 19:54:16 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -30,8 +30,6 @@ extern Context_T CTX; -void RaiseFill(int i, double Val, double ValMin, double Raise[3][8]); - // Iso line computation for triangles. void CutTriangle1D(double *X, double *Y, double *Z, double *Val, @@ -371,7 +369,7 @@ void EnhanceSimplexPolygon(Post_View * View, int nb, // nb of points in polyg void IsoSimplex(Post_View * View, int preproNormals, double *X, double *Y, double *Z, double *Val, - double V, double Raise[3][8]) + double V) { int nb; double Xp[6], Yp[6], Zp[6], PVals[6]; @@ -412,6 +410,11 @@ void IsoSimplex(Post_View * View, if(preproNormals) return; + double Raise[3][8]; + for(int i = 0; i < 3; i++) + for(int k = 0; k < nb; k++) + Raise[i][k] = View->Raise[i] * V; + if(nb == 3) Draw_Triangle(Xp, Yp, Zp, norms, Raise, View->Light); else if(nb == 4) diff --git a/Graphics/Iso.h b/Graphics/Iso.h index 8cc8cb0125d2d4e36ca8d6be9999656e5af02f4a..f661d7266a2dab77af225548f4632f09c3753f59 100644 --- a/Graphics/Iso.h +++ b/Graphics/Iso.h @@ -39,6 +39,6 @@ void CutLine1D (double *X, double *Y, double *Z, double *Val, void IsoSimplex (Post_View *View, int preproNormals, double *X, double *Y, double *Z, double *Val, - double V, double Raise[3][8]); + double V); #endif diff --git a/Graphics/Post.cpp b/Graphics/Post.cpp index 1331f8be3108249d7ef7e6895741e6a8abe1566c..3cfca657a217a4abcf62865d30c56b8bf10423dc 100644 --- a/Graphics/Post.cpp +++ b/Graphics/Post.cpp @@ -1,4 +1,4 @@ -// $Id: Post.cpp,v 1.57 2004-04-24 16:24:34 geuzaine Exp $ +// $Id: Post.cpp,v 1.58 2004-04-26 19:54:16 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -31,9 +31,6 @@ extern Context_T CTX; -static double Raise[3][8]; -static double RaiseFactor[3]; - // Give Value from Index double GiveValueFromIndex_Lin(double ValMin, double ValMax, int NbIso, int Iso) @@ -126,14 +123,6 @@ void PaletteDiscrete(Post_View * v, int nbi, int i) glColor4ubv((GLubyte *) & v->CT.table[index]); } -void RaiseFill(int i, double Val, double ValMin, double Raise[3][8]) -{ - int j; - for(j = 0; j < 3; j++) - Raise[j][i] = (Val - ValMin) * RaiseFactor[j]; -} - - // Compute node coordinates taking Offset and Explode into account void Get_Coords(double Explode, double *Offset, int nbnod, @@ -193,9 +182,7 @@ int changedEye() int compareEye(double *q, double *w, int nbnodes) { - double d, dq, dw, cgq[3] = { 0., 0., 0. }, cgw[3] = - { - 0., 0., 0.}; + double d, dq, dw, cgq[3] = { 0., 0., 0. }, cgw[3] = { 0., 0., 0.}; for(int i = 0; i < nbnodes; i++) { cgq[0] += q[i]; cgq[1] += q[i + nbnodes]; @@ -242,12 +229,9 @@ int compareEye8Nodes(const void *a, const void *b) // Draw_Post void Draw_ScalarList(Post_View * v, double ValMin, double ValMax, - double Raise[3][8], List_T * list, int nbelm, int nbnod, - int smoothnormals, void (*draw) (Post_View *, int, - double, double, - double[3][8], double *, - double *, double *, - double *)) + List_T * list, int nbelm, int nbnod, int smoothnormals, + void (*draw) (Post_View *, int, double, double, double *, + double *, double *, double *)) { int i, nb; double X[8], Y[8], Z[8]; @@ -266,7 +250,7 @@ void Draw_ScalarList(Post_View * v, double ValMin, double ValMax, (double *)List_Pointer_Fast(list, i), (double *)List_Pointer_Fast(list, i + nbnod), (double *)List_Pointer_Fast(list, i + 2 * nbnod), X, Y, Z); - draw(v, 1, ValMin, ValMax, Raise, X, Y, Z, + draw(v, 1, ValMin, ValMax, X, Y, Z, (double *)List_Pointer_Fast(list, i + 3 * nbnod)); } } @@ -275,15 +259,15 @@ void Draw_ScalarList(Post_View * v, double ValMin, double ValMax, (double *)List_Pointer_Fast(list, i), (double *)List_Pointer_Fast(list, i + nbnod), (double *)List_Pointer_Fast(list, i + 2 * nbnod), X, Y, Z); - draw(v, 0, ValMin, ValMax, Raise, X, Y, Z, + draw(v, 0, ValMin, ValMax, X, Y, Z, (double *)List_Pointer_Fast(list, i + 3 * nbnod)); } } } void Draw_VectorList(Post_View * v, double ValMin, double ValMax, - double Raise[3][8], List_T * list, int nbelm, int nbnod, - void (*draw) (Post_View *, double, double, double[3][8], + List_T * list, int nbelm, int nbnod, + void (*draw) (Post_View *, double, double, double *, double *, double *, double *)) { int i, nb; @@ -296,15 +280,15 @@ void Draw_VectorList(Post_View * v, double ValMin, double ValMax, (double *)List_Pointer_Fast(list, i), (double *)List_Pointer_Fast(list, i + nbnod), (double *)List_Pointer_Fast(list, i + 2 * nbnod), X, Y, Z); - draw(v, ValMin, ValMax, Raise, X, Y, Z, + draw(v, ValMin, ValMax, X, Y, Z, (double *)List_Pointer_Fast(list, i + 3 * nbnod)); } } } void Draw_TensorList(Post_View * v, double ValMin, double ValMax, - double Raise[3][8], List_T * list, int nbelm, int nbnod, - void (*draw) (Post_View *, double, double, double[3][8], + List_T * list, int nbelm, int nbnod, + void (*draw) (Post_View *, double, double, double *, double *, double *, double *)) { int i, nb; @@ -317,7 +301,7 @@ void Draw_TensorList(Post_View * v, double ValMin, double ValMax, (double *)List_Pointer_Fast(list, i), (double *)List_Pointer_Fast(list, i + nbnod), (double *)List_Pointer_Fast(list, i + 2 * nbnod), X, Y, Z); - draw(v, ValMin, ValMax, Raise, X, Y, Z, + draw(v, ValMin, ValMax, X, Y, Z, (double *)List_Pointer_Fast(list, i + 3 * nbnod)); } } @@ -326,7 +310,7 @@ void Draw_TensorList(Post_View * v, double ValMin, double ValMax, void Draw_Post(void) { int iView, j, k, nb; - double ValMin = 0., ValMax = 0., AbsMax; + double ValMin = 0., ValMax = 0.; Post_View *v; if(!CTX.post.list) @@ -398,14 +382,12 @@ void Draw_Post(void) if(v->NbST && v->DrawTriangles) { nb = List_Nbr(v->ST) / v->NbST; - qsort(v->ST->array, v->NbST, nb * sizeof(double), - compareEye3Nodes); + qsort(v->ST->array, v->NbST, nb * sizeof(double), compareEye3Nodes); v->Changed = 1; } if(v->NbSQ && v->DrawQuadrangles) { nb = List_Nbr(v->SQ) / v->NbSQ; - qsort(v->SQ->array, v->NbSQ, nb * sizeof(double), - compareEye4Nodes); + qsort(v->SQ->array, v->NbSQ, nb * sizeof(double), compareEye4Nodes); v->Changed = 1; } @@ -419,26 +401,22 @@ void Draw_Post(void) if(v->NbSS && v->DrawTetrahedra) { nb = List_Nbr(v->SS) / v->NbSS; - qsort(v->SS->array, v->NbSS, nb * sizeof(double), - compareEye4Nodes); + qsort(v->SS->array, v->NbSS, nb * sizeof(double), compareEye4Nodes); v->Changed = 1; } if(v->NbSH && v->DrawHexahedra) { nb = List_Nbr(v->SH) / v->NbSH; - qsort(v->SH->array, v->NbSH, nb * sizeof(double), - compareEye8Nodes); + qsort(v->SH->array, v->NbSH, nb * sizeof(double), compareEye8Nodes); v->Changed = 1; } if(v->NbSI && v->DrawPrisms) { nb = List_Nbr(v->SI) / v->NbSI; - qsort(v->SI->array, v->NbSI, nb * sizeof(double), - compareEye6Nodes); + qsort(v->SI->array, v->NbSI, nb * sizeof(double), compareEye6Nodes); v->Changed = 1; } if(v->NbSY && v->DrawPyramids) { nb = List_Nbr(v->SY) / v->NbSY; - qsort(v->SY->array, v->NbSY, nb * sizeof(double), - compareEye5Nodes); + qsort(v->SY->array, v->NbSY, nb * sizeof(double), compareEye5Nodes); v->Changed = 1; } @@ -517,94 +495,61 @@ void Draw_Post(void) break; } - AbsMax = DMAX(fabs(ValMin), fabs(ValMax)); - AbsMax = (AbsMax == 0.) ? 1. : AbsMax; - - for(j = 0; j < 3; j++) { - RaiseFactor[j] = v->Raise[j] / AbsMax; - for(k = 0; k < 5; k++) - Raise[j][k] = 0.; - } - // Points if(v->DrawPoints) { if(v->Type == DRAW_POST_3D) - Draw_ScalarList(v, ValMin, ValMax, Raise, v->SP, v->NbSP, 1, 0, - Draw_ScalarPoint); - Draw_VectorList(v, ValMin, ValMax, Raise, v->VP, v->NbVP, 1, - Draw_VectorPoint); - Draw_TensorList(v, ValMin, ValMax, Raise, v->TP, v->NbTP, 1, - Draw_TensorPoint); + Draw_ScalarList(v, ValMin, ValMax, v->SP, v->NbSP, 1, 0, Draw_ScalarPoint); + Draw_VectorList(v, ValMin, ValMax, v->VP, v->NbVP, 1, Draw_VectorPoint); + Draw_TensorList(v, ValMin, ValMax, v->TP, v->NbTP, 1, Draw_TensorPoint); } // Lines if(v->DrawLines) { - Draw_ScalarList(v, ValMin, ValMax, Raise, v->SL, v->NbSL, 2, 0, - Draw_ScalarLine); - Draw_VectorList(v, ValMin, ValMax, Raise, v->VL, v->NbVL, 2, - Draw_VectorLine); - Draw_TensorList(v, ValMin, ValMax, Raise, v->TL, v->NbTL, 2, - Draw_TensorLine); + Draw_ScalarList(v, ValMin, ValMax, v->SL, v->NbSL, 2, 0, Draw_ScalarLine); + Draw_VectorList(v, ValMin, ValMax, v->VL, v->NbVL, 2, Draw_VectorLine); + Draw_TensorList(v, ValMin, ValMax, v->TL, v->NbTL, 2, Draw_TensorLine); } // Triangles if(v->DrawTriangles) { - Draw_ScalarList(v, ValMin, ValMax, Raise, v->ST, v->NbST, 3, 1, - Draw_ScalarTriangle); - Draw_VectorList(v, ValMin, ValMax, Raise, v->VT, v->NbVT, 3, - Draw_VectorTriangle); - Draw_TensorList(v, ValMin, ValMax, Raise, v->TT, v->NbTT, 3, - Draw_TensorTriangle); + Draw_ScalarList(v, ValMin, ValMax, v->ST, v->NbST, 3, 1, Draw_ScalarTriangle); + Draw_VectorList(v, ValMin, ValMax, v->VT, v->NbVT, 3, Draw_VectorTriangle); + Draw_TensorList(v, ValMin, ValMax, v->TT, v->NbTT, 3, Draw_TensorTriangle); } // Quadrangles if(v->DrawQuadrangles) { - Draw_ScalarList(v, ValMin, ValMax, Raise, v->SQ, v->NbSQ, 4, 1, - Draw_ScalarQuadrangle); - Draw_VectorList(v, ValMin, ValMax, Raise, v->VQ, v->NbVQ, 4, - Draw_VectorQuadrangle); - Draw_TensorList(v, ValMin, ValMax, Raise, v->TQ, v->NbTQ, 4, - Draw_TensorQuadrangle); + Draw_ScalarList(v, ValMin, ValMax, v->SQ, v->NbSQ, 4, 1, Draw_ScalarQuadrangle); + Draw_VectorList(v, ValMin, ValMax, v->VQ, v->NbVQ, 4, Draw_VectorQuadrangle); + Draw_TensorList(v, ValMin, ValMax, v->TQ, v->NbTQ, 4, Draw_TensorQuadrangle); } // Tetrahedra if(v->DrawTetrahedra) { - Draw_ScalarList(v, ValMin, ValMax, Raise, v->SS, v->NbSS, 4, 1, - Draw_ScalarTetrahedron); - Draw_VectorList(v, ValMin, ValMax, Raise, v->VS, v->NbVS, 4, - Draw_VectorTetrahedron); - Draw_TensorList(v, ValMin, ValMax, Raise, v->TS, v->NbTS, 4, - Draw_TensorTetrahedron); + Draw_ScalarList(v, ValMin, ValMax, v->SS, v->NbSS, 4, 1, Draw_ScalarTetrahedron); + Draw_VectorList(v, ValMin, ValMax, v->VS, v->NbVS, 4, Draw_VectorTetrahedron); + Draw_TensorList(v, ValMin, ValMax, v->TS, v->NbTS, 4, Draw_TensorTetrahedron); } // Hexahedra if(v->DrawHexahedra) { - Draw_ScalarList(v, ValMin, ValMax, Raise, v->SH, v->NbSH, 8, 1, - Draw_ScalarHexahedron); - Draw_VectorList(v, ValMin, ValMax, Raise, v->VH, v->NbVH, 8, - Draw_VectorHexahedron); - Draw_TensorList(v, ValMin, ValMax, Raise, v->TH, v->NbTH, 8, - Draw_TensorHexahedron); + Draw_ScalarList(v, ValMin, ValMax, v->SH, v->NbSH, 8, 1, Draw_ScalarHexahedron); + Draw_VectorList(v, ValMin, ValMax, v->VH, v->NbVH, 8, Draw_VectorHexahedron); + Draw_TensorList(v, ValMin, ValMax, v->TH, v->NbTH, 8, Draw_TensorHexahedron); } // Prisms if(v->DrawPrisms) { - Draw_ScalarList(v, ValMin, ValMax, Raise, v->SI, v->NbSI, 6, 1, - Draw_ScalarPrism); - Draw_VectorList(v, ValMin, ValMax, Raise, v->VI, v->NbVI, 6, - Draw_VectorPrism); - Draw_TensorList(v, ValMin, ValMax, Raise, v->TI, v->NbTI, 6, - Draw_TensorPrism); + Draw_ScalarList(v, ValMin, ValMax, v->SI, v->NbSI, 6, 1, Draw_ScalarPrism); + Draw_VectorList(v, ValMin, ValMax, v->VI, v->NbVI, 6, Draw_VectorPrism); + Draw_TensorList(v, ValMin, ValMax, v->TI, v->NbTI, 6, Draw_TensorPrism); } // Pyramids if(v->DrawPyramids) { - Draw_ScalarList(v, ValMin, ValMax, Raise, v->SY, v->NbSY, 5, 1, - Draw_ScalarPyramid); - Draw_VectorList(v, ValMin, ValMax, Raise, v->VY, v->NbVY, 5, - Draw_VectorPyramid); - Draw_TensorList(v, ValMin, ValMax, Raise, v->TY, v->NbTY, 5, - Draw_TensorPyramid); + Draw_ScalarList(v, ValMin, ValMax, v->SY, v->NbSY, 5, 1, Draw_ScalarPyramid); + Draw_VectorList(v, ValMin, ValMax, v->VY, v->NbVY, 5, Draw_VectorPyramid); + Draw_TensorList(v, ValMin, ValMax, v->TY, v->NbTY, 5, Draw_TensorPyramid); } // Strings diff --git a/Graphics/PostElement.cpp b/Graphics/PostElement.cpp index 67cb74394cf77b6a29790c2a86c2eaf7ff1daf55..a119f1778f515cb7b6a90714756259ca675b9245 100644 --- a/Graphics/PostElement.cpp +++ b/Graphics/PostElement.cpp @@ -1,4 +1,4 @@ -// $Id: PostElement.cpp,v 1.26 2004-04-20 19:15:14 geuzaine Exp $ +// $Id: PostElement.cpp,v 1.27 2004-04-26 19:54:16 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -52,7 +52,6 @@ extern Context_T CTX; void Draw_ElementBoundary(int type, Post_View * View, double *X, double *Y, double *Z, double Raise[3][8]) { - int k; double xx[8], yy[8], zz[8]; glColor4ubv((GLubyte *) & CTX.color.fg); @@ -65,12 +64,12 @@ void Draw_ElementBoundary(int type, Post_View * View, double *X, double *Y, break; case TRIANGLE: glBegin(GL_LINE_LOOP); - for(k = 0; k < 3; k++) + for(int k = 0; k < 3; k++) glVertex3d(X[k] + Raise[0][k], Y[k] + Raise[1][k], Z[k] + Raise[2][k]); glEnd(); break; case TETRAHEDRON: - for(k = 0; k < 4; k++) { + for(int k = 0; k < 4; k++) { xx[k] = X[k] + Raise[0][k]; yy[k] = Y[k] + Raise[1][k]; zz[k] = Z[k] + Raise[2][k]; @@ -92,12 +91,12 @@ void Draw_ElementBoundary(int type, Post_View * View, double *X, double *Y, break; case QUADRANGLE: glBegin(GL_LINE_LOOP); - for(k = 0; k < 4; k++) + for(int k = 0; k < 4; k++) glVertex3d(X[k] + Raise[0][k], Y[k] + Raise[1][k], Z[k] + Raise[2][k]); glEnd(); break; case HEXAHEDRON: - for(k = 0; k < 8; k++) { + for(int k = 0; k < 8; k++) { xx[k] = X[k] + Raise[0][k]; yy[k] = Y[k] + Raise[1][k]; zz[k] = Z[k] + Raise[2][k]; @@ -130,7 +129,7 @@ void Draw_ElementBoundary(int type, Post_View * View, double *X, double *Y, glEnd(); break; case PRISM: - for(k = 0; k < 6; k++) { + for(int k = 0; k < 6; k++) { xx[k] = X[k] + Raise[0][k]; yy[k] = Y[k] + Raise[1][k]; zz[k] = Z[k] + Raise[2][k]; @@ -157,7 +156,7 @@ void Draw_ElementBoundary(int type, Post_View * View, double *X, double *Y, glEnd(); break; case PYRAMID: - for(k = 0; k < 5; k++) { + for(int k = 0; k < 5; k++) { xx[k] = X[k] + Raise[0][k]; yy[k] = Y[k] + Raise[1][k]; zz[k] = Z[k] + Raise[2][k]; @@ -187,9 +186,8 @@ void Draw_ElementBoundary(int type, Post_View * View, double *X, double *Y, void SaturateValues(int saturate, double min, double max, double *v1, double *v2, int nbnod) { - int i; if(saturate) { - for(i = 0; i < nbnod; i++) { + for(int i = 0; i < nbnod; i++) { if(v1[i] > max) v2[i] = max; else if(v1[i] < min) @@ -199,7 +197,7 @@ void SaturateValues(int saturate, double min, double max, } } else { - for(i = 0; i < nbnod; i++) { + for(int i = 0; i < nbnod; i++) { v2[i] = v1[i]; } } @@ -231,7 +229,7 @@ void SaturateValues(int saturate, double min, double max, // Scalar Elements void Draw_ScalarPoint(Post_View * View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V) { double d; @@ -249,7 +247,9 @@ void Draw_ScalarPoint(Post_View * View, int preproNormals, d = ValMin; } - RaiseFill(0, d, ValMin, Raise); + double Raise[3][8]; + for(int i = 0; i < 3; i++) + Raise[i][0] = View->Raise[i] * d; if(View->ShowElement) Draw_ElementBoundary(POINT, View, X, Y, Z, Raise); @@ -257,8 +257,7 @@ void Draw_ScalarPoint(Post_View * View, int preproNormals, if(d >= ValMin && d <= ValMax) { PaletteContinuous(View, ValMin, ValMax, d); if(View->IntervalsType == DRAW_POST_NUMERIC) { - glRasterPos3d(X[0] + Raise[0][0], Y[0] + Raise[1][0], - Z[0] + Raise[2][0]); + glRasterPos3d(X[0] + Raise[0][0], Y[0] + Raise[1][0], Z[0] + Raise[2][0]); sprintf(Num, View->Format, d); Draw_String(Num); } @@ -268,10 +267,10 @@ void Draw_ScalarPoint(Post_View * View, int preproNormals, } void Draw_ScalarLine(Post_View * View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V) { - int i, k, nb = 0; + int nb = 0; double d; double Xp[5], Yp[5], Zp[5], Val[5], value[5], thev; char Num[100]; @@ -282,8 +281,8 @@ void Draw_ScalarLine(Post_View * View, int preproNormals, View->Boundary--; int ts = View->TimeStep; View->TimeStep = 0; - Draw_ScalarPoint(View, 0, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &vv[0]); //0 - Draw_ScalarPoint(View, 0, ValMin, ValMax, Raise, &X[1], &Y[1], &Z[1], &vv[1]); //1 + Draw_ScalarPoint(View, 0, ValMin, ValMax, &X[0], &Y[0], &Z[0], &vv[0]); //0 + Draw_ScalarPoint(View, 0, ValMin, ValMax, &X[1], &Y[1], &Z[1], &vv[1]); //1 View->TimeStep = ts; View->Boundary++; return; @@ -291,8 +290,10 @@ void Draw_ScalarLine(Post_View * View, int preproNormals, SaturateValues(View->SaturateValues, ValMin, ValMax, vv, Val, 2); - for(k = 0; k < 2; k++) - RaiseFill(k, Val[k], ValMin, Raise); + double Raise[3][8]; + for(int i = 0; i < 3; i++) + for(int k = 0; k < 2; k++) + Raise[i][k] = View->Raise[i] * Val[k]; if(View->ShowElement) Draw_ElementBoundary(LINE, View, X, Y, Z, Raise); @@ -325,11 +326,9 @@ void Draw_ScalarLine(Post_View * View, int preproNormals, else { glBegin(GL_LINES); PaletteContinuous(View, ValMin, ValMax, Val[0]); - glVertex3d(X[0] + Raise[0][0], Y[0] + Raise[1][0], - Z[0] + Raise[2][0]); + glVertex3d(X[0] + Raise[0][0], Y[0] + Raise[1][0], Z[0] + Raise[2][0]); PaletteContinuous(View, ValMin, ValMax, Val[1]); - glVertex3d(X[1] + Raise[0][1], Y[1] + Raise[1][1], - Z[1] + Raise[2][1]); + glVertex3d(X[1] + Raise[0][1], Y[1] + Raise[1][1], Z[1] + Raise[2][1]); glEnd(); } } @@ -339,7 +338,7 @@ void Draw_ScalarLine(Post_View * View, int preproNormals, } else { - for(k = 0; k < View->NbIso; k++) { + for(int k = 0; k < View->NbIso; k++) { PaletteDiscrete(View, View->NbIso, k); if(View->IntervalsType == DRAW_POST_DISCRETE) { CutLine1D(X, Y, Z, &Val[0], @@ -347,8 +346,9 @@ void Draw_ScalarLine(Post_View * View, int preproNormals, View->GVFI(ValMin, ValMax, View->NbIso + 1, k + 1), Xp, Yp, Zp, &nb, value); if(nb == 2) { - for(i = 0; i < 2; i++) - RaiseFill(i, value[i], ValMin, Raise); + for(int i = 0; i < 3; i++) + for(int l = 0; l < 2; l++) + Raise[i][l] = View->Raise[i] * value[l]; Draw_Line(View->LineType, View->LineWidth, Xp, Yp, Zp, Raise, View->Light); } } @@ -356,7 +356,8 @@ void Draw_ScalarLine(Post_View * View, int preproNormals, thev = View->GVFI(ValMin, ValMax, View->NbIso, k); CutLine0D(X, Y, Z, &Val[0], thev, Xp, Yp, Zp, &nb); if(nb) { - RaiseFill(0, thev, ValMin, Raise); + for(int i = 0; i < 3; i++) + Raise[i][0] = View->Raise[i] * thev; Draw_Point(View->PointType, View->PointSize, Xp, Yp, Zp, Raise, View->Light); } } @@ -367,10 +368,10 @@ void Draw_ScalarLine(Post_View * View, int preproNormals, } void Draw_ScalarTriangle(Post_View * View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V) { - int i, k, nb = 0; + int nb = 0; double d; double x1x0, y1y0, z1z0, x2x0, y2y0, z2z0, nn[3], norms[9]; double Xp[5], Yp[5], Zp[5], Val[3], value[5], thev; @@ -382,10 +383,10 @@ void Draw_ScalarTriangle(Post_View * View, int preproNormals, View->Boundary--; int ts = View->TimeStep; View->TimeStep = 0; - Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &vv[0]); //01 - Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, &X[1], &Y[1], &Z[1], &vv[1]); //12 + Draw_ScalarLine(View, 0, ValMin, ValMax, &X[0], &Y[0], &Z[0], &vv[0]); //01 + Draw_ScalarLine(View, 0, ValMin, ValMax, &X[1], &Y[1], &Z[1], &vv[1]); //12 REORDER2(0, 2); - Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); //02 + Draw_ScalarLine(View, 0, ValMin, ValMax, Xp, Yp, Zp, Val); //02 View->TimeStep = ts; View->Boundary++; return; @@ -393,8 +394,10 @@ void Draw_ScalarTriangle(Post_View * View, int preproNormals, SaturateValues(View->SaturateValues, ValMin, ValMax, vv, Val, 3); - for(k = 0; k < 3; k++) - RaiseFill(k, Val[k], ValMin, Raise); + double Raise[3][8]; + for(int i = 0; i < 3; i++) + for(int k = 0; k < 3; k++) + Raise[i][k] = View->Raise[i] * Val[k]; if(View->Light) { @@ -410,14 +413,14 @@ void Draw_ScalarTriangle(Post_View * View, int preproNormals, if(View->SmoothNormals) { if(preproNormals) { - for(i = 0; i < 3; i++) { + for(int i = 0; i < 3; i++) { View->add_normal(X[i] + Raise[0][i], Y[i] + Raise[1][i], Z[i] + Raise[2][i], nn[0], nn[1], nn[2]); } return; } else { - for(i = 0; i < 3; i++) { + for(int i = 0; i < 3; i++) { norms[3 * i] = nn[0]; norms[3 * i + 1] = nn[1]; norms[3 * i + 2] = nn[2]; @@ -432,7 +435,7 @@ void Draw_ScalarTriangle(Post_View * View, int preproNormals, } } else { - for(i = 0; i < 3; i++) { + for(int i = 0; i < 3; i++) { norms[3 * i] = nn[0]; norms[3 * i + 1] = nn[1]; norms[3 * i + 2] = nn[2]; @@ -456,12 +459,9 @@ void Draw_ScalarTriangle(Post_View * View, int preproNormals, if(d >= ValMin && d <= ValMax) { PaletteContinuous(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., - (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.); + 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); } @@ -478,34 +478,31 @@ void Draw_ScalarTriangle(Post_View * View, int preproNormals, glBegin(GL_TRIANGLES); PaletteContinuous(View, ValMin, ValMax, Val[0]); glNormal3dv(&norms[0]); - glVertex3d(X[0] + Raise[0][0], Y[0] + Raise[1][0], - Z[0] + Raise[2][0]); + glVertex3d(X[0] + Raise[0][0], Y[0] + Raise[1][0], Z[0] + Raise[2][0]); PaletteContinuous(View, ValMin, ValMax, Val[1]); glNormal3dv(&norms[3]); - glVertex3d(X[1] + Raise[0][1], Y[1] + Raise[1][1], - Z[1] + Raise[2][1]); + glVertex3d(X[1] + Raise[0][1], Y[1] + Raise[1][1], Z[1] + Raise[2][1]); PaletteContinuous(View, ValMin, ValMax, Val[2]); glNormal3dv(&norms[6]); - glVertex3d(X[2] + Raise[0][2], Y[2] + Raise[1][2], - Z[2] + Raise[2][2]); + glVertex3d(X[2] + Raise[0][2], Y[2] + Raise[1][2], Z[2] + Raise[2][2]); glEnd(); } else { CutTriangle2D(X, Y, Z, Val, ValMin, ValMax, Xp, Yp, Zp, &nb, value); if(nb >= 3) { glBegin(GL_POLYGON); - for(i = 0; i < nb; i++) { + for(int i = 0; i < nb; i++) { PaletteContinuous(View, ValMin, ValMax, value[i]); - RaiseFill(i, value[i], ValMin, Raise); - glVertex3d(Xp[i] + Raise[0][i], Yp[i] + Raise[1][i], - Zp[i] + Raise[2][i]); + glVertex3d(Xp[i] + View->Raise[0] * value[i], + Yp[i] + View->Raise[1] * value[i], + Zp[i] + View->Raise[2] * value[i]); } glEnd(); } } } else { - for(k = 0; k < View->NbIso; k++) { + for(int k = 0; k < View->NbIso; k++) { PaletteDiscrete(View, View->NbIso, k); if(View->IntervalsType == DRAW_POST_DISCRETE) { CutTriangle2D(X, Y, Z, Val, @@ -513,12 +510,11 @@ void Draw_ScalarTriangle(Post_View * View, int preproNormals, View->GVFI(ValMin, ValMax, View->NbIso + 1, k + 1), Xp, Yp, Zp, &nb, value); if(nb >= 3) { - for(i = 0; i < nb; i++) - RaiseFill(i, value[i], ValMin, Raise); glBegin(GL_POLYGON); - for(i = 0; i < nb; i++) - glVertex3d(Xp[i] + Raise[0][i], - Yp[i] + Raise[1][i], Zp[i] + Raise[2][i]); + for(int i = 0; i < nb; i++) + glVertex3d(Xp[i] + View->Raise[0] * value[i], + Yp[i] + View->Raise[1] * value[i], + Zp[i] + View->Raise[2] * value[i]); glEnd(); } } @@ -526,8 +522,9 @@ void Draw_ScalarTriangle(Post_View * View, int preproNormals, thev = View->GVFI(ValMin, ValMax, View->NbIso, k); CutTriangle1D(X, Y, Z, Val, thev, Xp, Yp, Zp, &nb); if(nb == 2) { - for(i = 0; i < 2; i++) - RaiseFill(i, thev, ValMin, Raise); + for(int i = 0; i < 3; i++) + for(int l = 0; l < 2; l++) + Raise[i][l] = View->Raise[i] * thev; Draw_Line(View->LineType, View->LineWidth, Xp, Yp, Zp, Raise, View->Light); } } @@ -540,10 +537,9 @@ void Draw_ScalarTriangle(Post_View * View, int preproNormals, } void Draw_ScalarTetrahedron(Post_View * View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V) { - int k; double d, Xp[4], Yp[4], Zp[4]; char Num[100]; double Val[4]; @@ -554,15 +550,15 @@ void Draw_ScalarTetrahedron(Post_View * View, int preproNormals, View->Boundary--; int ts = View->TimeStep; View->TimeStep = 0; - Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &vv[0]); //012 - Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, &X[1], &Y[1], &Z[1], &vv[1]); //123 + Draw_ScalarTriangle(View, 0, ValMin, ValMax, &X[0], &Y[0], &Z[0], &vv[0]); //012 + Draw_ScalarTriangle(View, 0, ValMin, ValMax, &X[1], &Y[1], &Z[1], &vv[1]); //123 REORDER3(0, 1, 3); - Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); //013 + Draw_ScalarTriangle(View, 0, ValMin, ValMax, Xp, Yp, Zp, Val); //013 Xp[1] = X[2]; Yp[1] = Y[2]; Zp[1] = Z[2]; Val[1] = vv[2]; - Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); //023 + Draw_ScalarTriangle(View, 0, ValMin, ValMax, Xp, Yp, Zp, Val); //023 View->TimeStep = ts; View->Boundary++; return; @@ -570,8 +566,10 @@ void Draw_ScalarTetrahedron(Post_View * View, int preproNormals, SaturateValues(View->SaturateValues, ValMin, ValMax, vv, Val, 4); - for(k = 0; k < 4; k++) - RaiseFill(k, Val[k], ValMin, Raise); + double Raise[3][8]; + for(int i = 0; i < 3; i++) + for(int k = 0; k < 4; k++) + Raise[i][k] = View->Raise[i] * Val[k]; if(!preproNormals && View->ShowElement) Draw_ElementBoundary(TETRAHEDRON, View, X, Y, Z, Raise); @@ -593,21 +591,21 @@ void Draw_ScalarTetrahedron(Post_View * View, int preproNormals, } else { - for(k = 0; k < View->NbIso; k++) { + for(int k = 0; k < View->NbIso; k++) { if(!preproNormals) PaletteDiscrete(View, View->NbIso, k); IsoSimplex(View, preproNormals, X, Y, Z, Val, - View->GVFI(ValMin, ValMax, View->NbIso, k), Raise); + View->GVFI(ValMin, ValMax, View->NbIso, k)); } } } void Draw_ScalarQuadrangle(Post_View * View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V) { - int k, ts, show = 0; + int ts, show = 0; double Val[4], Xp[4], Yp[4], Zp[4]; double *vv = &V[4 * View->TimeStep]; @@ -616,11 +614,11 @@ void Draw_ScalarQuadrangle(Post_View * View, int preproNormals, if(!preproNormals && View->Boundary > 0) { View->Boundary--; - Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &vv[0]); //01 - Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, &X[1], &Y[1], &Z[1], &vv[1]); //12 - Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, &X[2], &Y[2], &Z[2], &vv[2]); //23 + Draw_ScalarLine(View, 0, ValMin, ValMax, &X[0], &Y[0], &Z[0], &vv[0]); //01 + Draw_ScalarLine(View, 0, ValMin, ValMax, &X[1], &Y[1], &Z[1], &vv[1]); //12 + Draw_ScalarLine(View, 0, ValMin, ValMax, &X[2], &Y[2], &Z[2], &vv[2]); //23 REORDER2(0, 3); - Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); //03 + Draw_ScalarLine(View, 0, ValMin, ValMax, Xp, Yp, Zp, Val); //03 View->TimeStep = ts; View->Boundary++; return; @@ -631,24 +629,26 @@ void Draw_ScalarQuadrangle(Post_View * View, int preproNormals, if(!preproNormals && show) { SaturateValues(View->SaturateValues, ValMin, ValMax, vv, Val, 4); - for(k = 0; k < 4; k++) - RaiseFill(k, Val[k], ValMin, Raise); + double Raise[3][8]; + for(int i = 0; i < 3; i++) + for(int k = 0; k < 4; k++) + Raise[i][k] = View->Raise[i] * Val[k]; Draw_ElementBoundary(QUADRANGLE, View, X, Y, Z, Raise); } - Draw_ScalarTriangle(View, preproNormals, ValMin, ValMax, Raise, X, Y, Z, vv); //012 + Draw_ScalarTriangle(View, preproNormals, ValMin, ValMax, X, Y, Z, vv); //012 REORDER3(0, 2, 3); - Draw_ScalarTriangle(View, preproNormals, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); //023 + Draw_ScalarTriangle(View, preproNormals, ValMin, ValMax, Xp, Yp, Zp, Val); //023 View->TimeStep = ts; View->ShowElement = show; } void Draw_ScalarHexahedron(Post_View * View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V) { - int k, ts, show = 0; + int ts, show = 0; double Val[8], Xp[8], Yp[8], Zp[8]; double *vv = &V[8 * View->TimeStep]; @@ -658,16 +658,16 @@ void Draw_ScalarHexahedron(Post_View * View, int preproNormals, if(!preproNormals && View->Boundary > 0) { View->Boundary--; REORDER4(0, 1, 5, 4); - Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); //0154 + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Xp, Yp, Zp, Val); //0154 REORDER4(0, 3, 2, 1); - Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); //0321 + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Xp, Yp, Zp, Val); //0321 REORDER4(0, 4, 7, 3); - Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); //0473 + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Xp, Yp, Zp, Val); //0473 REORDER4(1, 2, 6, 5); - Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); //1265 + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Xp, Yp, Zp, Val); //1265 REORDER4(2, 3, 7, 6); - Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); //2376 - Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, &X[4], &Y[4], &Z[4], &vv[4]); //4567 + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Xp, Yp, Zp, Val); //2376 + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, &X[4], &Y[4], &Z[4], &vv[4]); //4567 View->TimeStep = ts; View->Boundary++; return; @@ -678,27 +678,27 @@ void Draw_ScalarHexahedron(Post_View * View, int preproNormals, if(!preproNormals && show) { SaturateValues(View->SaturateValues, ValMin, ValMax, vv, Val, 8); - for(k = 0; k < 8; k++) - RaiseFill(k, Val[k], ValMin, Raise); + double Raise[3][8]; + for(int i = 0; i < 3; i++) + for(int k = 0; k < 8; k++) + Raise[i][k] = View->Raise[i] * Val[k]; Draw_ElementBoundary(HEXAHEDRON, View, X, Y, Z, Raise); } REORDER6(0, 1, 3, 4, 5, 7); - Draw_ScalarPrism(View, preproNormals, ValMin, ValMax, Raise, Xp, Yp, Zp, - Val); + Draw_ScalarPrism(View, preproNormals, ValMin, ValMax, Xp, Yp, Zp, Val); REORDER6(1, 2, 3, 5, 6, 7); - Draw_ScalarPrism(View, preproNormals, ValMin, ValMax, Raise, Xp, Yp, Zp, - Val); + Draw_ScalarPrism(View, preproNormals, ValMin, ValMax, Xp, Yp, Zp, Val); View->TimeStep = ts; View->ShowElement = show; } void Draw_ScalarPrism(Post_View * View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V) { - int k, ts, show = 0; + int ts, show = 0; double Val[6], Xp[6], Yp[6], Zp[6]; double *vv = &V[6 * View->TimeStep]; @@ -708,15 +708,14 @@ void Draw_ScalarPrism(Post_View * View, int preproNormals, if(!preproNormals && View->Boundary > 0) { View->Boundary--; REORDER4(0, 1, 4, 3); - Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Xp, Yp, Zp, Val); REORDER3(0, 2, 1); - Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); + Draw_ScalarTriangle(View, 0, ValMin, ValMax, Xp, Yp, Zp, Val); REORDER4(0, 3, 5, 2); - Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Xp, Yp, Zp, Val); REORDER4(1, 2, 5, 4); - Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); - Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, &X[3], &Y[3], &Z[3], - &V[3]); + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Xp, Yp, Zp, Val); + Draw_ScalarTriangle(View, 0, ValMin, ValMax, &X[3], &Y[3], &Z[3], &V[3]); View->TimeStep = ts; View->Boundary++; return; @@ -727,23 +726,25 @@ void Draw_ScalarPrism(Post_View * View, int preproNormals, if(!preproNormals && show) { SaturateValues(View->SaturateValues, ValMin, ValMax, vv, Val, 6); - for(k = 0; k < 6; k++) - RaiseFill(k, Val[k], ValMin, Raise); + double Raise[3][8]; + for(int i = 0; i < 3; i++) + for(int k = 0; k < 6; k++) + Raise[i][k] = View->Raise[i] * Val[k]; Draw_ElementBoundary(PRISM, View, X, Y, Z, Raise); } - Draw_ScalarTetrahedron(View, preproNormals, ValMin, ValMax, Raise, X, Y, Z, vv); //0123 + Draw_ScalarTetrahedron(View, preproNormals, ValMin, ValMax, X, Y, Z, vv); //0123 REORDER4(3, 4, 5, 2); - Draw_ScalarTetrahedron(View, preproNormals, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); //3452 + Draw_ScalarTetrahedron(View, preproNormals, ValMin, ValMax, Xp, Yp, Zp, Val); //3452 REORDER4(1, 2, 4, 3); - Draw_ScalarTetrahedron(View, preproNormals, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); //1243 + Draw_ScalarTetrahedron(View, preproNormals, ValMin, ValMax, Xp, Yp, Zp, Val); //1243 View->TimeStep = ts; View->ShowElement = show; } void Draw_ScalarPyramid(Post_View * View, int preproNormals, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V) { static int error = 0; @@ -756,10 +757,10 @@ void Draw_ScalarPyramid(Post_View * View, int preproNormals, // Vector Elements void Draw_VectorElement(int type, Post_View * View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V) { - int j, k, nbnod = 0; + int nbnod = 0; double fact, xx[8], yy[8], zz[8], xc = 0., yc = 0., zc = 0.; double Val[8][3], d[8]; double dx = 0., dy = 0., dz = 0., dd; @@ -792,20 +793,22 @@ void Draw_VectorElement(int type, Post_View * View, break; } - for(k = 0; k < nbnod; k++) { + for(int k = 0; k < nbnod; k++) { Val[k][0] = V[3 * nbnod * View->TimeStep + 3 * k]; Val[k][1] = V[3 * nbnod * View->TimeStep + 3 * k + 1]; Val[k][2] = V[3 * nbnod * View->TimeStep + 3 * k + 2]; - d[k] = - sqrt(Val[k][0] * Val[k][0] + Val[k][1] * Val[k][1] + - Val[k][2] * Val[k][2]); - RaiseFill(k, d[k], ValMin, Raise); + d[k] = sqrt(Val[k][0] * Val[k][0] + Val[k][1] * Val[k][1] + Val[k][2] * Val[k][2]); } + double Raise[3][8]; + for(int i = 0; i < 3; i++) + for(int k = 0; k < nbnod; k++) + Raise[i][k] = View->Raise[i] * d[k]; + if(View->VectorType == DRAW_POST_DISPLACEMENT) { fact = View->DisplacementFactor; - for(k = 0; k < nbnod; k++) { + for(int k = 0; k < nbnod; k++) { 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]; @@ -815,7 +818,7 @@ void Draw_VectorElement(int type, Post_View * View, View->TimeStep = 0; switch (type) { case POINT: - Draw_ScalarPoint(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); + Draw_ScalarPoint(View, 0, ValMin, ValMax, xx, yy, zz, d); if(ts) { //draw trajectory if(View->LineType) { double dx2, dy2, dz2, XX[2], YY[2], ZZ[2]; @@ -823,7 +826,7 @@ void Draw_VectorElement(int type, Post_View * View, Raise[0][1] = Raise[0][0]; Raise[1][1] = Raise[1][0]; Raise[2][1] = Raise[2][0]; - for(j = 0; j < ts; j++) { + for(int j = 0; j < ts; j++) { dx = V[3 * (ts - j)]; dy = V[3 * (ts - j) + 1]; dz = V[3 * (ts - j) + 2]; @@ -844,7 +847,7 @@ void Draw_VectorElement(int type, Post_View * View, } else { glBegin(GL_LINE_STRIP); - for(j = 0; j < ts + 1; j++) { + for(int j = 0; j < ts + 1; j++) { dx = V[3 * (ts - j)]; dy = V[3 * (ts - j) + 1]; dz = V[3 * (ts - j) + 2]; @@ -859,25 +862,25 @@ void Draw_VectorElement(int type, Post_View * View, } break; case LINE: - Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); + Draw_ScalarLine(View, 0, ValMin, ValMax, xx, yy, zz, d); break; case TRIANGLE: - Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); + Draw_ScalarTriangle(View, 0, ValMin, ValMax, xx, yy, zz, d); break; case TETRAHEDRON: - Draw_ScalarTetrahedron(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); + Draw_ScalarTetrahedron(View, 0, ValMin, ValMax, xx, yy, zz, d); break; case QUADRANGLE: - Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, xx, yy, zz, d); break; case HEXAHEDRON: - Draw_ScalarHexahedron(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); + Draw_ScalarHexahedron(View, 0, ValMin, ValMax, xx, yy, zz, d); break; case PRISM: - Draw_ScalarPrism(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); + Draw_ScalarPrism(View, 0, ValMin, ValMax, xx, yy, zz, d); break; case PYRAMID: - Draw_ScalarPyramid(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); + Draw_ScalarPyramid(View, 0, ValMin, ValMax, xx, yy, zz, d); break; } View->TimeStep = ts; @@ -889,7 +892,7 @@ void Draw_VectorElement(int type, Post_View * View, if(View->ArrowLocation == DRAW_POST_LOCATE_COG || View->IntervalsType == DRAW_POST_NUMERIC) { - for(k = 0; k < nbnod; k++) { + for(int k = 0; k < nbnod; k++) { dx += Val[k][0]; xc += X[k] + Raise[0][k]; dy += Val[k][1]; @@ -928,7 +931,8 @@ void Draw_VectorElement(int type, Post_View * View, dy *= dd; dz *= dd; } - RaiseFill(0, dd, ValMin, Raise); + for(int i = 0; i < 3; i++) + Raise[i][0] = View->Raise[i] * dd; Draw_Vector(View->VectorType, View->IntervalsType != DRAW_POST_ISO, View->ArrowRelHeadRadius, View->ArrowRelStemLength, View->ArrowRelStemRadius, xc, yc, zc, @@ -937,7 +941,7 @@ void Draw_VectorElement(int type, Post_View * View, } } else { - for(k = 0; k < nbnod; k++) { + for(int k = 0; k < nbnod; k++) { if(d[k] != 0.0 && d[k] >= ValMin && d[k] <= ValMax) { if(View->IntervalsType == DRAW_POST_CONTINUOUS) PaletteContinuous(View, ValMin, ValMax, d[k]); @@ -954,7 +958,8 @@ void Draw_VectorElement(int type, Post_View * View, Val[k][1] *= d[k]; Val[k][2] *= d[k]; } - RaiseFill(0, d[k], ValMin, Raise); + for(int i = 0; i < 3; i++) + Raise[i][0] = View->Raise[i] * d[k]; Draw_Vector(View->VectorType, View->IntervalsType != DRAW_POST_ISO, View->ArrowRelHeadRadius, View->ArrowRelStemLength, View->ArrowRelStemRadius, X[k], Y[k], Z[k], @@ -965,48 +970,48 @@ void Draw_VectorElement(int type, Post_View * View, } } -#define ARGS Post_View *View, \ - double ValMin, double ValMax, double Raise[3][8], \ +#define ARGS Post_View *View, \ + double ValMin, double ValMax, \ double *X, double *Y, double *Z, double *V void Draw_VectorPoint(ARGS) { - Draw_VectorElement(POINT, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_VectorElement(POINT, View, ValMin, ValMax, X, Y, Z, V); } void Draw_VectorLine(ARGS) { - Draw_VectorElement(LINE, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_VectorElement(LINE, View, ValMin, ValMax, X, Y, Z, V); } void Draw_VectorTriangle(ARGS) { - Draw_VectorElement(TRIANGLE, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_VectorElement(TRIANGLE, View, ValMin, ValMax, X, Y, Z, V); } void Draw_VectorTetrahedron(ARGS) { - Draw_VectorElement(TETRAHEDRON, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_VectorElement(TETRAHEDRON, View, ValMin, ValMax, X, Y, Z, V); } void Draw_VectorQuadrangle(ARGS) { - Draw_VectorElement(QUADRANGLE, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_VectorElement(QUADRANGLE, View, ValMin, ValMax, X, Y, Z, V); } void Draw_VectorHexahedron(ARGS) { - Draw_VectorElement(HEXAHEDRON, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_VectorElement(HEXAHEDRON, View, ValMin, ValMax, X, Y, Z, V); } void Draw_VectorPrism(ARGS) { - Draw_VectorElement(PRISM, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_VectorElement(PRISM, View, ValMin, ValMax, X, Y, Z, V); } void Draw_VectorPyramid(ARGS) { - Draw_VectorElement(PYRAMID, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_VectorElement(PYRAMID, View, ValMin, ValMax, X, Y, Z, V); } #undef ARGS @@ -1014,7 +1019,7 @@ void Draw_VectorPyramid(ARGS) // Tensor Elements void Draw_TensorElement(int type, Post_View * View, - double ValMin, double ValMax, double Raise[3][8], + double ValMin, double ValMax, double *X, double *Y, double *Z, double *V) { int nbnod = 0; @@ -1061,76 +1066,76 @@ void Draw_TensorElement(int type, Post_View * View, switch (type) { case POINT: - Draw_ScalarPoint(View, 0, ValMin, ValMax, Raise, X, Y, Z, V_VonMises); + Draw_ScalarPoint(View, 0, ValMin, ValMax, X, Y, Z, V_VonMises); break; case LINE: - Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, X, Y, Z, V_VonMises); + Draw_ScalarLine(View, 0, ValMin, ValMax, X, Y, Z, V_VonMises); break; case TRIANGLE: - Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, X, Y, Z, V_VonMises); + Draw_ScalarTriangle(View, 0, ValMin, ValMax, X, Y, Z, V_VonMises); break; case QUADRANGLE: - Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, X, Y, Z, V_VonMises); + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, X, Y, Z, V_VonMises); break; case TETRAHEDRON: - Draw_ScalarTetrahedron(View, 0, ValMin, ValMax, Raise, X, Y, Z, V_VonMises); + Draw_ScalarTetrahedron(View, 0, ValMin, ValMax, X, Y, Z, V_VonMises); break; case HEXAHEDRON: - Draw_ScalarHexahedron(View, 0, ValMin, ValMax, Raise, X, Y, Z, V_VonMises); + Draw_ScalarHexahedron(View, 0, ValMin, ValMax, X, Y, Z, V_VonMises); break; case PRISM: - Draw_ScalarPrism(View, 0, ValMin, ValMax, Raise, X, Y, Z, V_VonMises); + Draw_ScalarPrism(View, 0, ValMin, ValMax, X, Y, Z, V_VonMises); break; case PYRAMID: - Draw_ScalarPyramid(View, 0, ValMin, ValMax, Raise, X, Y, Z, V_VonMises); + Draw_ScalarPyramid(View, 0, ValMin, ValMax, X, Y, Z, V_VonMises); break; } View->TimeStep = ts; } -#define ARGS Post_View *View, \ - double ValMin, double ValMax, double Raise[3][8], \ +#define ARGS Post_View *View, \ + double ValMin, double ValMax, \ double *X, double *Y, double *Z, double *V void Draw_TensorPoint(ARGS) { - Draw_TensorElement(POINT, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_TensorElement(POINT, View, ValMin, ValMax, X, Y, Z, V); } void Draw_TensorLine(ARGS) { - Draw_TensorElement(LINE, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_TensorElement(LINE, View, ValMin, ValMax, X, Y, Z, V); } void Draw_TensorTriangle(ARGS) { - Draw_TensorElement(TRIANGLE, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_TensorElement(TRIANGLE, View, ValMin, ValMax, X, Y, Z, V); } void Draw_TensorTetrahedron(ARGS) { - Draw_TensorElement(TETRAHEDRON, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_TensorElement(TETRAHEDRON, View, ValMin, ValMax, X, Y, Z, V); } void Draw_TensorQuadrangle(ARGS) { - Draw_TensorElement(QUADRANGLE, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_TensorElement(QUADRANGLE, View, ValMin, ValMax, X, Y, Z, V); } void Draw_TensorHexahedron(ARGS) { - Draw_TensorElement(HEXAHEDRON, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_TensorElement(HEXAHEDRON, View, ValMin, ValMax, X, Y, Z, V); } void Draw_TensorPrism(ARGS) { - Draw_TensorElement(PRISM, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_TensorElement(PRISM, View, ValMin, ValMax, X, Y, Z, V); } void Draw_TensorPyramid(ARGS) { - Draw_TensorElement(PYRAMID, View, ValMin, ValMax, Raise, X, Y, Z, V); + Draw_TensorElement(PYRAMID, View, ValMin, ValMax, X, Y, Z, V); } #undef ARGS diff --git a/benchmarks/misc/animation.geo b/benchmarks/misc/animation.geo index a97770746b88365401cb0724f2a1200761d59071..9afba2aecb8fee7b8fa71a2ec74386d42a387396 100644 --- a/benchmarks/misc/animation.geo +++ b/benchmarks/misc/animation.geo @@ -5,7 +5,6 @@ General.Color.Background = White ; General.Color.Foreground = Red ; View[0].IntervalsType = 2 ; -View[0].RaiseZ = 0.1 ; For(1:300) @@ -15,8 +14,6 @@ For(1:300) View[0].TimeStep += (View[0].TimeStep < View[0].NbTimeStep-1) ? 1 : 0 ; - View[0].RaiseZ -= .01 ; - Sleep 0.1; Draw; diff --git a/tutorial/t8.geo b/tutorial/t8.geo index 9d91c478f633dd6d1cc873315fe0b3078b4c9ec9..6fcb0ac47f86783044bc31becbcd2b5c24b02590 100644 --- a/tutorial/t8.geo +++ b/tutorial/t8.geo @@ -84,7 +84,7 @@ For num In {1:255} t = (View[v0].TimeStep < View[v0].NbTimeStep-1) ? t+1 : 0 ; - View[v0].RaiseZ += 0.01*t ; + View[v0].RaiseZ += 0.01/View[v0].Max * t ; If (num == 3) // We want to create 320x240 frames when num == 3: