Skip to content
Snippets Groups Projects
Commit 8f677ee3 authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

View.Explode + Clean-up View.Offset

parent 70ecd053
No related branches found
No related tags found
No related merge requests found
...@@ -443,6 +443,8 @@ StringXNumber ViewOptions_Number[] = { ...@@ -443,6 +443,8 @@ StringXNumber ViewOptions_Number[] = {
"Elevation of the view along Z-axis (in model coordinates)" }, "Elevation of the view along Z-axis (in model coordinates)" },
{ F|O, "ArrowScale" , opt_view_arrow_scale , 50. , { F|O, "ArrowScale" , opt_view_arrow_scale , 50. ,
"Size of the vector (e.g. arrow size in pixels)" }, "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. , { F, "Visible" , opt_view_visible , 1. ,
"Is the view visible?" }, "Is the view visible?" },
{ F|O, "IntervalsType" , opt_view_intervals_type , DRAW_POST_ISO , { F|O, "IntervalsType" , opt_view_intervals_type , DRAW_POST_ISO ,
......
// $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 "Gmsh.h"
#include "GmshUI.h" #include "GmshUI.h"
...@@ -1703,6 +1703,18 @@ double opt_view_arrow_scale(OPT_ARGS_NUM){ ...@@ -1703,6 +1703,18 @@ double opt_view_arrow_scale(OPT_ARGS_NUM){
#endif #endif
return v->ArrowScale; 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){ double opt_view_visible(OPT_ARGS_NUM){
GET_VIEW(0.) ; GET_VIEW(0.) ;
if(action & GMSH_SET){ if(action & GMSH_SET){
......
...@@ -203,6 +203,7 @@ double opt_view_raise0(OPT_ARGS_NUM); ...@@ -203,6 +203,7 @@ double opt_view_raise0(OPT_ARGS_NUM);
double opt_view_raise1(OPT_ARGS_NUM); double opt_view_raise1(OPT_ARGS_NUM);
double opt_view_raise2(OPT_ARGS_NUM); double opt_view_raise2(OPT_ARGS_NUM);
double opt_view_arrow_scale(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_visible(OPT_ARGS_NUM);
double opt_view_intervals_type(OPT_ARGS_NUM); double opt_view_intervals_type(OPT_ARGS_NUM);
double opt_view_saturate_values(OPT_ARGS_NUM); double opt_view_saturate_values(OPT_ARGS_NUM);
......
// $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 <set>
#include "Gmsh.h" #include "Gmsh.h"
...@@ -404,6 +404,7 @@ void CopyViewOptions(Post_View *src, Post_View *dest){ ...@@ -404,6 +404,7 @@ void CopyViewOptions(Post_View *src, Post_View *dest){
dest->Raise[1] = src->Raise[1]; dest->Raise[1] = src->Raise[1];
dest->Raise[2] = src->Raise[2]; dest->Raise[2] = src->Raise[2];
dest->ArrowScale = src->ArrowScale; dest->ArrowScale = src->ArrowScale;
dest->Explode = src->Explode;
dest->Visible = src->Visible; dest->Visible = src->Visible;
dest->IntervalsType = src->IntervalsType; dest->IntervalsType = src->IntervalsType;
dest->SaturateValues = src->SaturateValues; dest->SaturateValues = src->SaturateValues;
......
...@@ -29,7 +29,7 @@ class Post_View{ ...@@ -29,7 +29,7 @@ class Post_View{
// options // options
char Format[NAME_STR_L]; char Format[NAME_STR_L];
double CustomMin, CustomMax; double CustomMin, CustomMax;
double Offset[3], Raise[3], ArrowScale; double Offset[3], Raise[3], ArrowScale, Explode;
int Visible, IntervalsType, NbIso, Light, SmoothNormals ; int Visible, IntervalsType, NbIso, Light, SmoothNormals ;
int SaturateValues; int SaturateValues;
int ShowElement, ShowTime, ShowScale; int ShowElement, ShowTime, ShowScale;
......
// $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 <sys/types.h>
#include <signal.h> #include <signal.h>
...@@ -519,7 +519,7 @@ void help_short_cb(CALLBACK_ARGS){ ...@@ -519,7 +519,7 @@ void help_short_cb(CALLBACK_ARGS){
Msg(DIRECT, " Alt+Shift+p hide/show mesh points"); Msg(DIRECT, " Alt+Shift+p hide/show mesh points");
Msg(DIRECT, " Alt+s hide/show geometry surfaces"); Msg(DIRECT, " Alt+s hide/show geometry surfaces");
Msg(DIRECT, " Alt+Shift+s hide/show mesh 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+v hide/show geometry volumes");
Msg(DIRECT, " Alt+Shift+v hide/show mesh volumes"); Msg(DIRECT, " Alt+Shift+v hide/show mesh volumes");
Msg(DIRECT, " Alt+x set X view"); Msg(DIRECT, " Alt+x set X view");
...@@ -1727,6 +1727,7 @@ void view_options_ok_cb(CALLBACK_ARGS){ ...@@ -1727,6 +1727,7 @@ void view_options_ok_cb(CALLBACK_ARGS){
opt_view_timestep(i, GMSH_SET, WID->view_value[9]->value()); 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_arrow_scale(i, GMSH_SET, WID->view_value[10]->value());
opt_view_boundary(i, GMSH_SET, WID->view_value[11]->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_name(i, GMSH_SET, (char*)WID->view_input[0]->value());
opt_view_format(i, GMSH_SET, (char*)WID->view_input[1]->value()); opt_view_format(i, GMSH_SET, (char*)WID->view_input[1]->value());
......
// $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: // To make the interface as visually consistent as possible, please:
// - use the BH, BW, WB, IW values for button heights/widths, window borders, etc. // - use the BH, BW, WB, IW values for button heights/widths, window borders, etc.
...@@ -1240,10 +1240,10 @@ void GUI::create_mesh_options_window(){ ...@@ -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[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[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[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[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[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[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[11] = new Fl_Check_Button(width/2, 2*WB+4*BH, IW, BH, "Volume numbers");
for(i=4 ; i<12 ; i++){ for(i=4 ; i<12 ; i++){
mesh_butt[i]->type(FL_TOGGLE_BUTTON); mesh_butt[i]->type(FL_TOGGLE_BUTTON);
mesh_butt[i]->down_box(FL_DOWN_BOX); mesh_butt[i]->down_box(FL_DOWN_BOX);
...@@ -1567,7 +1567,7 @@ void GUI::create_statistics_window(){ ...@@ -1567,7 +1567,7 @@ void GUI::create_statistics_window(){
o->labelsize(CTX.fontsize); o->labelsize(CTX.fontsize);
o->hide(); o->hide();
stat_value[18] = new Fl_Output(2*WB, 2*WB+1*BH, IW, BH, "Views"); 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[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[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"); 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){ ...@@ -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"); Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "General");
o->labelsize(CTX.fontsize); o->labelsize(CTX.fontsize);
o->hide(); 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]->type(FL_TOGGLE_BUTTON);
view_butt[27]->down_box(FL_DOWN_BOX); view_butt[27]->down_box(FL_DOWN_BOX);
view_butt[27]->labelsize(CTX.fontsize); view_butt[27]->labelsize(CTX.fontsize);
view_butt[27]->selection_color(FL_YELLOW); 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_value[11] = new Fl_Value_Input(width/2, 2*WB+ 1*BH, IW, BH, "Boundary");
view_butt[19] = new Fl_Check_Button(width/2, 2*WB+2*BH, BW, BH, "Draw lines"); view_value[11]->labelsize(CTX.fontsize);
view_butt[20] = new Fl_Check_Button(width/2, 2*WB+3*BH, BW, BH, "Draw triangles"); view_value[11]->textsize(CTX.fontsize);
view_butt[21] = new Fl_Check_Button(width/2, 2*WB+4*BH, BW, BH, "Draw tetrahedra"); 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_value[12] = new Fl_Value_Input(width/2, 2*WB+ 2*BH, IW, BH, "Explode");
view_butt[23] = new Fl_Check_Button(width/2, 2*WB+6*BH, BW, BH, "Draw vector values"); view_value[12]->labelsize(CTX.fontsize);
view_butt[24] = new Fl_Check_Button(width/2, 2*WB+7*BH, BW, BH, "Draw tensor values"); 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++){ for(i=13 ; i<25 ; i++){
view_butt[i]->type(FL_TOGGLE_BUTTON); view_butt[i]->type(FL_TOGGLE_BUTTON);
view_butt[i]->down_box(FL_DOWN_BOX); view_butt[i]->down_box(FL_DOWN_BOX);
...@@ -1973,14 +1999,6 @@ void GUI::create_view_options_window(int num){ ...@@ -1973,14 +1999,6 @@ void GUI::create_view_options_window(int num){
view_butt[i]->selection_color(FL_YELLOW); 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(); o->end();
} }
// Range // Range
...@@ -1988,7 +2006,7 @@ void GUI::create_view_options_window(int num){ ...@@ -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"); Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Range");
o->labelsize(CTX.fontsize); o->labelsize(CTX.fontsize);
o->hide(); 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]->type(FL_TOGGLE_BUTTON);
view_butt[0]->down_box(FL_DOWN_BOX); view_butt[0]->down_box(FL_DOWN_BOX);
view_butt[0]->labelsize(CTX.fontsize); view_butt[0]->labelsize(CTX.fontsize);
...@@ -2010,14 +2028,12 @@ void GUI::create_view_options_window(int num){ ...@@ -2010,14 +2028,12 @@ void GUI::create_view_options_window(int num){
view_butt[i]->labelsize(CTX.fontsize); view_butt[i]->labelsize(CTX.fontsize);
view_butt[i]->selection_color(FL_YELLOW); view_butt[i]->selection_color(FL_YELLOW);
} }
/// ADD JF - DOUBLE LOG SCALE view_butt[26] = new Fl_Check_Button(2*WB, 2*WB+6*BH, BW, BH, "Double logarithmic");
/// 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]->type(FL_RADIO_BUTTON); view_butt[26]->type(FL_RADIO_BUTTON);
view_butt[26]->labelsize(CTX.fontsize); view_butt[26]->labelsize(CTX.fontsize);
view_butt[26]->selection_color(FL_YELLOW); 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]->type(FL_TOGGLE_BUTTON);
view_butt[25]->down_box(FL_DOWN_BOX); view_butt[25]->down_box(FL_DOWN_BOX);
view_butt[25]->labelsize(CTX.fontsize); view_butt[25]->labelsize(CTX.fontsize);
...@@ -2048,14 +2064,6 @@ void GUI::create_view_options_window(int num){ ...@@ -2048,14 +2064,6 @@ void GUI::create_view_options_window(int num){
view_butt[i]->labelsize(CTX.fontsize); view_butt[i]->labelsize(CTX.fontsize);
view_butt[i]->selection_color(FL_YELLOW); 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(); o->end();
} }
// Offset and Raise // Offset and Raise
...@@ -2206,11 +2214,13 @@ void GUI::update_view_window(int num){ ...@@ -2206,11 +2214,13 @@ void GUI::update_view_window(int num){
view_value[i]->maximum(v->CustomMax); view_value[i]->maximum(v->CustomMax);
} }
opt_view_scale_type(num, GMSH_GUI, 0); opt_view_scale_type(num, GMSH_GUI, 0);
opt_view_saturate_values(num, GMSH_GUI, 0);
// intervals // intervals
opt_view_nb_iso(num, GMSH_GUI, 0); opt_view_nb_iso(num, GMSH_GUI, 0);
opt_view_intervals_type(num, GMSH_GUI, 0); opt_view_intervals_type(num, GMSH_GUI, 0);
opt_view_boundary(num, GMSH_GUI, 0); opt_view_boundary(num, GMSH_GUI, 0);
opt_view_explode(num, GMSH_GUI, 0);
// offset/raise // offset/raise
opt_view_offset0(num, GMSH_GUI, 0); opt_view_offset0(num, GMSH_GUI, 0);
......
...@@ -50,20 +50,17 @@ void Draw_Post(void); ...@@ -50,20 +50,17 @@ void Draw_Post(void);
void Draw_Scales(void); void Draw_Scales(void);
void Draw_Axes (double s); void Draw_Axes (double s);
void Draw_SmallAxes(void); void Draw_SmallAxes(void);
void Draw_Point(double *x, double *y, double *z, void Draw_Point(double *x, double *y, double *z, double Raise[3][5]);
double *Offset, double Raise[3][5]); void Draw_Line (double *x, double *y, double *z, double Raise[3][5]);
void Draw_Line (double *x, double *y, double *z,
double *Offset, double Raise[3][5]);
void Draw_Triangle (double *x, double *y, double *z,double *n, 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, 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);
void Draw_Polygon (int n, double *x, double *y, double *z, void Draw_Polygon (int n, double *x, double *y, double *z, double Raise[3][5]);
double *Offset, double Raise[3][5]);
void Draw_Vector (int Type, int Fill, void Draw_Vector (int Type, int Fill,
double x, double y, double z, double x, double y, double z,
double d, double dx, double dy, double dz, 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_Volumes(void *a, void *b);
void Draw_Mesh_Surfaces(void *a, void *b); void Draw_Mesh_Surfaces(void *a, void *b);
void Draw_Mesh_Extruded_Surfaces(void *a, void *b); void Draw_Mesh_Extruded_Surfaces(void *a, void *b);
......
// $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 "Gmsh.h"
#include "GmshUI.h" #include "GmshUI.h"
...@@ -12,12 +12,9 @@ extern Context_T CTX; ...@@ -12,12 +12,9 @@ extern Context_T CTX;
/* D r a w _ P o i n t */ /* D r a w _ P o i n t */
/* ------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------ */
void Draw_Point (double *x, double *y, double *z, void Draw_Point (double *x, double *y, double *z, double Raise[3][5]){
double *Offset, double Raise[3][5]){
glBegin(GL_POINTS); glBegin(GL_POINTS);
glVertex3d(x[0]+Offset[0]+Raise[0][0], glVertex3d(x[0]+Raise[0][0], y[0]+Raise[1][0], z[0]+Raise[2][0]);
y[0]+Offset[1]+Raise[1][0],
z[0]+Offset[2]+Raise[2][0]);
glEnd(); glEnd();
} }
...@@ -25,15 +22,10 @@ void Draw_Point (double *x, double *y, double *z, ...@@ -25,15 +22,10 @@ void Draw_Point (double *x, double *y, double *z,
/* D r a w _ L i n e */ /* D r a w _ L i n e */
/* ------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------ */
void Draw_Line (double *x, double *y, double *z, void Draw_Line (double *x, double *y, double *z, double Raise[3][5]){
double *Offset, double Raise[3][5]){
glBegin(GL_LINES); glBegin(GL_LINES);
glVertex3d(x[0]+Offset[0]+Raise[0][0], glVertex3d(x[0]+Raise[0][0], y[0]+Raise[1][0], z[0]+Raise[2][0]);
y[0]+Offset[1]+Raise[1][0], glVertex3d(x[1]+Raise[0][1], y[1]+Raise[1][1], z[1]+Raise[2][1]);
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]);
glEnd(); glEnd();
} }
...@@ -42,7 +34,7 @@ void Draw_Line (double *x, double *y, double *z, ...@@ -42,7 +34,7 @@ void Draw_Line (double *x, double *y, double *z,
/* ------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------ */
void Draw_Triangle (double *x, double *y, double *z, double *n, 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]; double x1x0, y1y0, z1z0, x2x0, y2y0, z2z0, nn[3];
...@@ -64,23 +56,17 @@ void Draw_Triangle (double *x, double *y, double *z, double *n, ...@@ -64,23 +56,17 @@ void Draw_Triangle (double *x, double *y, double *z, double *n,
glNormal3dv(&n[0]); glNormal3dv(&n[0]);
} }
glVertex3d(x[0]+Offset[0]+Raise[0][0], glVertex3d(x[0]+Raise[0][0], y[0]+Raise[1][0], z[0]+Raise[2][0]);
y[0]+Offset[1]+Raise[1][0],
z[0]+Offset[2]+Raise[2][0]);
if (shade && n) if (shade && n)
glNormal3dv(&n[3]); glNormal3dv(&n[3]);
glVertex3d(x[1]+Offset[0]+Raise[0][1], glVertex3d(x[1]+Raise[0][1], y[1]+Raise[1][1], z[1]+Raise[2][1]);
y[1]+Offset[1]+Raise[1][1],
z[1]+Offset[2]+Raise[2][1]);
if (shade && n) if (shade && n)
glNormal3dv(&n[6]); glNormal3dv(&n[6]);
glVertex3d(x[2]+Offset[0]+Raise[0][2], glVertex3d(x[2]+Raise[0][2], y[2]+Raise[1][2], z[2]+Raise[2][2]);
y[2]+Offset[1]+Raise[1][2],
z[2]+Offset[2]+Raise[2][2]);
glEnd(); glEnd();
} }
...@@ -90,7 +76,7 @@ void Draw_Triangle (double *x, double *y, double *z, double *n, ...@@ -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, 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 I think this gives better results
...@@ -100,7 +86,7 @@ void Draw_Quadrangle (double *x, double *y, double *z, double *n, ...@@ -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 y2[3]={y[2],y[3],y[0]};
double z2[3]={z[2],z[3],z[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){ if (n){
double n2[9]; double n2[9];
n2[0] = n[6]; n2[0] = n[6];
...@@ -112,10 +98,10 @@ void Draw_Quadrangle (double *x, double *y, double *z, double *n, ...@@ -112,10 +98,10 @@ void Draw_Quadrangle (double *x, double *y, double *z, double *n,
n2[6] = n[0]; n2[6] = n[0];
n2[7] = n[1]; n2[7] = n[1];
n2[8] = n[2]; n2[8] = n[2];
Draw_Triangle(x2,y2,z2,n2,Offset,Raise,shade); Draw_Triangle(x2,y2,z2,n2,Raise,shade);
} }
else 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, ...@@ -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, void Draw_Polygon (int n, double *x, double *y, double *z,
double *Offset, double Raise[3][5]){ double Raise[3][5]){
int i; int i;
glBegin(GL_POLYGON); glBegin(GL_POLYGON);
for(i=0;i<n;i++) glVertex3d(x[i]+Offset[0]+Raise[0][i], for(i=0;i<n;i++) glVertex3d(x[i]+Raise[0][i],
y[i]+Offset[1]+Raise[1][i], y[i]+Raise[1][i],
z[i]+Offset[2]+Raise[2][i]); z[i]+Raise[2][i]);
glEnd(); glEnd();
} }
...@@ -141,17 +127,17 @@ void Draw_Polygon (int n, double *x, double *y, double *z, ...@@ -141,17 +127,17 @@ void Draw_Polygon (int n, double *x, double *y, double *z,
void Draw_Vector (int Type, int Fill, void Draw_Vector (int Type, int Fill,
double x, double y, double z, double x, double y, double z,
double d, double dx, double dy, double dz, 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 n[3],t[3],u[3];
double l,b,c, f1, f2; double l,b,c, f1, f2;
if(d == 0.0) return; if(d == 0.0) return;
if(Offset != NULL && Raise != NULL){ if(Raise != NULL){
x += Offset[0]+Raise[0][0] ; x += Raise[0][0] ;
y += Offset[1]+Raise[1][0] ; y += Raise[1][0] ;
z += Offset[2]+Raise[2][0] ; z += Raise[2][0] ;
} }
if(Type == DRAW_POST_SEGMENT){ if(Type == DRAW_POST_SEGMENT){
......
// $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 "Gmsh.h"
#include "GmshUI.h" #include "GmshUI.h"
...@@ -150,7 +150,7 @@ void Draw_Curve (void *a, void *b){ ...@@ -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); 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); glColor4ubv((GLubyte*)&CTX.color.geom.tangents);
Draw_Vector(DRAW_POST_ARROW, 0, v.Pos.X,v.Pos.Y,v.Pos.Z, 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){ if(CTX.render_mode == GMSH_SELECT){
...@@ -365,7 +365,7 @@ void Draw_Plane_Surface (Surface *s){ ...@@ -365,7 +365,7 @@ void Draw_Plane_Surface (Surface *s){
nn = sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]); nn = sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);
glColor4ubv((GLubyte*)&CTX.color.geom.normals); 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., 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){ ...@@ -468,7 +468,7 @@ void Draw_NonPlane_Surface (Surface *s){
nn = sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]); nn = sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);
glColor4ubv((GLubyte*)&CTX.color.geom.normals); glColor4ubv((GLubyte*)&CTX.color.geom.normals);
Draw_Vector(DRAW_POST_ARROW, 0, n1.Pos.X, n1.Pos.Y, n1.Pos.Z, 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);
} }
} }
......
...@@ -141,7 +141,7 @@ void IsoSimplex( Post_View *View, ...@@ -141,7 +141,7 @@ void IsoSimplex( Post_View *View,
int preproNormals, int preproNormals,
double *X, double *Y, double *Z, double *Val, double *X, double *Y, double *Z, double *Val,
double V, double Vmin, double Vmax, double V, double Vmin, double Vmax,
double *Offset, double Raise[3][5]){ double Raise[3][5]){
int nb; int nb;
double Xp[6],Yp[6],Zp[6],PVals[6]; double Xp[6],Yp[6],Zp[6],PVals[6];
double norms[12]; double norms[12];
...@@ -196,8 +196,8 @@ void IsoSimplex( Post_View *View, ...@@ -196,8 +196,8 @@ void IsoSimplex( Post_View *View,
if(preproNormals)return; if(preproNormals)return;
if(nb == 3) 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) else if(nb == 4)
Draw_Quadrangle(Xp,Yp,Zp,norms,Offset,Raise,View->Light); Draw_Quadrangle(Xp,Yp,Zp,norms,Raise,View->Light);
} }
...@@ -6,5 +6,5 @@ void IsoSimplex (Post_View *View, ...@@ -6,5 +6,5 @@ void IsoSimplex (Post_View *View,
int preproNormals, int preproNormals,
double *X, double *Y, double *Z, double *Val, double *X, double *Y, double *Z, double *Val,
double V, double Vmin, double Vmax, double V, double Vmin, double Vmax,
double *Offset, double Raise[3][5]); double Raise[3][5]);
#endif #endif
// $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 "Gmsh.h"
#include "GmshUI.h" #include "GmshUI.h"
...@@ -547,7 +547,7 @@ void Draw_Simplex_Surfaces (void *a, void *b){ ...@@ -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[1] *= CTX.mesh.normals * CTX.pixel_equiv_x/CTX.s[1] ;
m[2] *= CTX.mesh.normals * CTX.pixel_equiv_x/CTX.s[2] ; 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]); 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);
} }
......
// $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 "Gmsh.h"
#include "GmshUI.h" #include "GmshUI.h"
...@@ -102,9 +102,40 @@ void Free_DisplayLists(void){ ...@@ -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) { void Draw_Post (void) {
int iView,i,j,k,nb; int iView,i,j,k,nb;
double ValMin,ValMax,AbsMax; double ValMin,ValMax,AbsMax,X[4],Y[4],Z[4];
Post_View *v; Post_View *v;
if(!Post_ViewList) return; if(!Post_ViewList) return;
...@@ -214,60 +245,78 @@ void Draw_Post (void) { ...@@ -214,60 +245,78 @@ void Draw_Post (void) {
if(v->NbSP && v->DrawPoints && v->DrawScalars){ if(v->NbSP && v->DrawPoints && v->DrawScalars){
nb = List_Nbr(v->SP) / v->NbSP ; nb = List_Nbr(v->SP) / v->NbSP ;
for(i = 0 ; i < List_Nbr(v->SP) ; i+=nb) for(i = 0 ; i < List_Nbr(v->SP) ; i+=nb){
Draw_ScalarPoint(v, ValMin, ValMax, Raise, Get_Coords(1., v->Offset, 1,
(double*)List_Pointer_Fast(v->SP,i), (double*)List_Pointer_Fast(v->SP,i),
(double*)List_Pointer_Fast(v->SP,i+1), (double*)List_Pointer_Fast(v->SP,i+1),
(double*)List_Pointer_Fast(v->SP,i+2), (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)); (double*)List_Pointer_Fast(v->SP,i+3));
}
} }
if(v->NbVP && v->DrawPoints && v->DrawVectors){ if(v->NbVP && v->DrawPoints && v->DrawVectors){
nb = List_Nbr(v->VP) / v->NbVP ; nb = List_Nbr(v->VP) / v->NbVP ;
for(i = 0 ; i < List_Nbr(v->VP) ; i+=nb) for(i = 0 ; i < List_Nbr(v->VP) ; i+=nb){
Draw_VectorPoint(v, ValMin, ValMax, Raise, Get_Coords(1., v->Offset, 1,
(double*)List_Pointer_Fast(v->VP,i), (double*)List_Pointer_Fast(v->VP,i),
(double*)List_Pointer_Fast(v->VP,i+1), (double*)List_Pointer_Fast(v->VP,i+1),
(double*)List_Pointer_Fast(v->VP,i+2), (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)); (double*)List_Pointer_Fast(v->VP,i+3));
}
} }
if(v->NbTP && v->DrawPoints && v->DrawTensors){ if(v->NbTP && v->DrawPoints && v->DrawTensors){
nb = List_Nbr(v->TP) / v->NbTP ; nb = List_Nbr(v->TP) / v->NbTP ;
for(i = 0 ; i < List_Nbr(v->TP) ; i+=nb) for(i = 0 ; i < List_Nbr(v->TP) ; i+=nb){
Draw_TensorPoint(v, ValMin, ValMax, Raise, Get_Coords(1., v->Offset, 1,
(double*)List_Pointer_Fast(v->TP,i), (double*)List_Pointer_Fast(v->TP,i),
(double*)List_Pointer_Fast(v->TP,i+1), (double*)List_Pointer_Fast(v->TP,i+1),
(double*)List_Pointer_Fast(v->TP,i+2), (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)); (double*)List_Pointer_Fast(v->TP,i+3));
}
} }
// Lines // Lines
if(v->NbSL && v->DrawLines && v->DrawScalars){ if(v->NbSL && v->DrawLines && v->DrawScalars){
nb = List_Nbr(v->SL) / v->NbSL ; nb = List_Nbr(v->SL) / v->NbSL ;
for(i = 0 ; i < List_Nbr(v->SL) ; i+=nb) for(i = 0 ; i < List_Nbr(v->SL) ; i+=nb){
Draw_ScalarLine(v, ValMin, ValMax, Raise, Get_Coords(v->Explode, v->Offset, 2,
(double*)List_Pointer_Fast(v->SL,i), (double*)List_Pointer_Fast(v->SL,i),
(double*)List_Pointer_Fast(v->SL,i+2), (double*)List_Pointer_Fast(v->SL,i+2),
(double*)List_Pointer_Fast(v->SL,i+4), (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)); (double*)List_Pointer_Fast(v->SL,i+6));
}
} }
if(v->NbVL && v->DrawLines && v->DrawVectors){ if(v->NbVL && v->DrawLines && v->DrawVectors){
nb = List_Nbr(v->VL) / v->NbVL ; nb = List_Nbr(v->VL) / v->NbVL ;
for(i = 0 ; i < List_Nbr(v->VL) ; i+=nb) for(i = 0 ; i < List_Nbr(v->VL) ; i+=nb){
Draw_VectorLine(v, ValMin, ValMax, Raise, Get_Coords(v->Explode, v->Offset, 2,
(double*)List_Pointer_Fast(v->VL,i), (double*)List_Pointer_Fast(v->VL,i),
(double*)List_Pointer_Fast(v->VL,i+2), (double*)List_Pointer_Fast(v->VL,i+2),
(double*)List_Pointer_Fast(v->VL,i+4), (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)); (double*)List_Pointer_Fast(v->VL,i+6));
}
} }
if(v->NbTL && v->DrawLines && v->DrawTensors){ if(v->NbTL && v->DrawLines && v->DrawTensors){
nb = List_Nbr(v->TL) / v->NbTL ; nb = List_Nbr(v->TL) / v->NbTL ;
for(i = 0 ; i < List_Nbr(v->TL) ; i+=nb) for(i = 0 ; i < List_Nbr(v->TL) ; i+=nb){
Draw_VectorLine(v, ValMin, ValMax, Raise, Get_Coords(v->Explode, v->Offset, 2,
(double*)List_Pointer_Fast(v->TL,i), (double*)List_Pointer_Fast(v->TL,i),
(double*)List_Pointer_Fast(v->TL,i+2), (double*)List_Pointer_Fast(v->TL,i+2),
(double*)List_Pointer_Fast(v->TL,i+4), (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)); (double*)List_Pointer_Fast(v->TL,i+6));
}
} }
// Triangles // Triangles
...@@ -276,37 +325,49 @@ void Draw_Post (void) { ...@@ -276,37 +325,49 @@ void Draw_Post (void) {
nb = List_Nbr(v->ST) / v->NbST ; nb = List_Nbr(v->ST) / v->NbST ;
if(v->Light && v->SmoothNormals && v->Changed && v->IntervalsType != DRAW_POST_ISO){ if(v->Light && v->SmoothNormals && v->Changed && v->IntervalsType != DRAW_POST_ISO){
Msg(DEBUG, "Preprocessing of triangle normals in view %d", v->Num); Msg(DEBUG, "Preprocessing of triangle normals in view %d", v->Num);
for(i = 0 ; i < List_Nbr(v->ST) ; i+=nb) for(i = 0 ; i < List_Nbr(v->ST) ; i+=nb){
Draw_ScalarTriangle(v, 1, ValMin, ValMax, Raise, Get_Coords(v->Explode, v->Offset, 3,
(double*)List_Pointer_Fast(v->ST,i), (double*)List_Pointer_Fast(v->ST,i),
(double*)List_Pointer_Fast(v->ST,i+3), (double*)List_Pointer_Fast(v->ST,i+3),
(double*)List_Pointer_Fast(v->ST,i+6), (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)); (double*)List_Pointer_Fast(v->ST,i+9));
}
} }
for(i = 0 ; i < List_Nbr(v->ST) ; i+=nb) for(i = 0 ; i < List_Nbr(v->ST) ; i+=nb){
Draw_ScalarTriangle(v, 0, ValMin, ValMax, Raise, Get_Coords(v->Explode, v->Offset, 3,
(double*)List_Pointer_Fast(v->ST,i), (double*)List_Pointer_Fast(v->ST,i),
(double*)List_Pointer_Fast(v->ST,i+3), (double*)List_Pointer_Fast(v->ST,i+3),
(double*)List_Pointer_Fast(v->ST,i+6), (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)); (double*)List_Pointer_Fast(v->ST,i+9));
}
} }
if(v->NbVT && v->DrawTriangles && v->DrawVectors){ if(v->NbVT && v->DrawTriangles && v->DrawVectors){
nb = List_Nbr(v->VT) / v->NbVT ; nb = List_Nbr(v->VT) / v->NbVT ;
for(i = 0 ; i < List_Nbr(v->VT) ; i+=nb) for(i = 0 ; i < List_Nbr(v->VT) ; i+=nb){
Draw_VectorTriangle(v, ValMin, ValMax, Raise, Get_Coords(v->Explode, v->Offset, 3,
(double*)List_Pointer_Fast(v->VT,i), (double*)List_Pointer_Fast(v->VT,i),
(double*)List_Pointer_Fast(v->VT,i+3), (double*)List_Pointer_Fast(v->VT,i+3),
(double*)List_Pointer_Fast(v->VT,i+6), (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)); (double*)List_Pointer_Fast(v->VT,i+9));
}
} }
if(v->NbTT && v->DrawTriangles && v->DrawTensors){ if(v->NbTT && v->DrawTriangles && v->DrawTensors){
nb = List_Nbr(v->TT) / v->NbTT ; nb = List_Nbr(v->TT) / v->NbTT ;
for(i = 0 ; i < List_Nbr(v->TT) ; i+=nb) for(i = 0 ; i < List_Nbr(v->TT) ; i+=nb){
Draw_TensorTriangle(v, ValMin, ValMax, Raise, Get_Coords(v->Explode, v->Offset, 3,
(double*)List_Pointer_Fast(v->TT,i), (double*)List_Pointer_Fast(v->TT,i),
(double*)List_Pointer_Fast(v->TT,i+3), (double*)List_Pointer_Fast(v->TT,i+3),
(double*)List_Pointer_Fast(v->TT,i+6), (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)); (double*)List_Pointer_Fast(v->TT,i+9));
}
} }
// Tetrahedra // Tetrahedra
...@@ -315,37 +376,49 @@ void Draw_Post (void) { ...@@ -315,37 +376,49 @@ void Draw_Post (void) {
nb = List_Nbr(v->SS) / v->NbSS ; nb = List_Nbr(v->SS) / v->NbSS ;
if(v->Light && v->SmoothNormals && v->Changed && v->IntervalsType != DRAW_POST_ISO){ if(v->Light && v->SmoothNormals && v->Changed && v->IntervalsType != DRAW_POST_ISO){
Msg(DEBUG, "Preprocessing of tets normals in view %d", v->Num); Msg(DEBUG, "Preprocessing of tets normals in view %d", v->Num);
for(i = 0 ; i < List_Nbr(v->SS) ; i+=nb) for(i = 0 ; i < List_Nbr(v->SS) ; i+=nb){
Draw_ScalarTetrahedron(v, 1, ValMin, ValMax, Raise, Get_Coords(v->Explode, v->Offset, 4,
(double*)List_Pointer_Fast(v->SS,i), (double*)List_Pointer_Fast(v->SS,i),
(double*)List_Pointer_Fast(v->SS,i+4), (double*)List_Pointer_Fast(v->SS,i+4),
(double*)List_Pointer_Fast(v->SS,i+8), (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)); (double*)List_Pointer_Fast(v->SS,i+12));
}
} }
for(i = 0 ; i < List_Nbr(v->SS) ; i+=nb) for(i = 0 ; i < List_Nbr(v->SS) ; i+=nb){
Draw_ScalarTetrahedron(v, 0, ValMin, ValMax, Raise, Get_Coords(v->Explode, v->Offset, 4,
(double*)List_Pointer_Fast(v->SS,i), (double*)List_Pointer_Fast(v->SS,i),
(double*)List_Pointer_Fast(v->SS,i+4), (double*)List_Pointer_Fast(v->SS,i+4),
(double*)List_Pointer_Fast(v->SS,i+8), (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)); (double*)List_Pointer_Fast(v->SS,i+12));
}
} }
if(v->NbVS && v->DrawTetrahedra && v->DrawVectors){ if(v->NbVS && v->DrawTetrahedra && v->DrawVectors){
nb = List_Nbr(v->VS) / v->NbVS ; nb = List_Nbr(v->VS) / v->NbVS ;
for(i = 0 ; i < List_Nbr(v->VS) ; i+=nb) for(i = 0 ; i < List_Nbr(v->VS) ; i+=nb){
Draw_VectorTetrahedron(v, ValMin, ValMax, Raise, Get_Coords(v->Explode, v->Offset, 4,
(double*)List_Pointer_Fast(v->VS,i), (double*)List_Pointer_Fast(v->VS,i),
(double*)List_Pointer_Fast(v->VS,i+4), (double*)List_Pointer_Fast(v->VS,i+4),
(double*)List_Pointer_Fast(v->VS,i+8), (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)); (double*)List_Pointer_Fast(v->VS,i+12));
}
} }
if(v->NbTS && v->DrawTetrahedra && v->DrawTensors){ if(v->NbTS && v->DrawTetrahedra && v->DrawTensors){
nb = List_Nbr(v->TS) / v->NbTS ; nb = List_Nbr(v->TS) / v->NbTS ;
for(i = 0 ; i < List_Nbr(v->TS) ; i+=nb) for(i = 0 ; i < List_Nbr(v->TS) ; i+=nb){
Draw_TensorTetrahedron(v, ValMin, ValMax, Raise, Get_Coords(v->Explode, v->Offset, 4,
(double*)List_Pointer_Fast(v->TS,i), (double*)List_Pointer_Fast(v->TS,i),
(double*)List_Pointer_Fast(v->TS,i+4), (double*)List_Pointer_Fast(v->TS,i+4),
(double*)List_Pointer_Fast(v->TS,i+8), (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)); (double*)List_Pointer_Fast(v->TS,i+12));
}
} }
......
// $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 "Gmsh.h"
#include "GmshUI.h" #include "GmshUI.h"
...@@ -11,32 +11,30 @@ ...@@ -11,32 +11,30 @@
extern Context_T CTX; extern Context_T CTX;
void Draw_Simplex(int dim, double *X, double *Y, double *Z, void Draw_Simplex(int nbnod, double *X, double *Y, double *Z,
double *Offset, double Raise[3][5]){ double Raise[3][5]){
int k; int k;
double xx[4], yy[4], zz[4]; double xx[4], yy[4], zz[4];
glColor4ubv((GLubyte*)&CTX.color.fg); glColor4ubv((GLubyte*)&CTX.color.fg);
switch(dim){ switch(nbnod){
case 0 :
Draw_Point(X,Y,Z,Offset,Raise);
break;
case 1 : case 1 :
Draw_Line(X,Y,Z,Offset,Raise); Draw_Point(X,Y,Z,Raise);
break; break;
case 2 : case 2 :
Draw_Line(X,Y,Z,Raise);
break;
case 3 :
glBegin(GL_LINE_LOOP); glBegin(GL_LINE_LOOP);
for(k=0 ; k<3 ; k++) for(k=0 ; k<3 ; k++)
glVertex3d(X[k]+Offset[0]+Raise[0][k], glVertex3d(X[k]+Raise[0][k], Y[k]+Raise[1][k], Z[k]+Raise[2][k]);
Y[k]+Offset[1]+Raise[1][k],
Z[k]+Offset[2]+Raise[2][k]);
glEnd(); glEnd();
break; break;
case 3 : case 4 :
for(k=0 ; k<4 ; k++){ for(k=0 ; k<4 ; k++){
xx[k] = X[k]+Offset[0]+Raise[0][k] ; xx[k] = X[k]+Raise[0][k] ;
yy[k] = Y[k]+Offset[1]+Raise[1][k] ; yy[k] = Y[k]+Raise[1][k] ;
zz[k] = Z[k]+Offset[2]+Raise[2][k] ; zz[k] = Z[k]+Raise[2][k] ;
} }
glBegin(GL_LINES); glBegin(GL_LINES);
glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[1], yy[1], zz[1]); glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[1], yy[1], zz[1]);
...@@ -72,19 +70,17 @@ void Draw_ScalarPoint(Post_View *View, ...@@ -72,19 +70,17 @@ void Draw_ScalarPoint(Post_View *View,
RaiseFill(0, d, ValMin, Raise); 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){ if(d>=ValMin && d<=ValMax){
Palette2(View,ValMin,ValMax,d); Palette2(View,ValMin,ValMax,d);
if(View->IntervalsType == DRAW_POST_NUMERIC){ if(View->IntervalsType == DRAW_POST_NUMERIC){
glRasterPos3d(X[0]+Raise[0][0]+View->Offset[0], glRasterPos3d(X[0]+Raise[0][0], Y[0]+Raise[1][0], Z[0]+Raise[2][0]);
Y[0]+Raise[1][0]+View->Offset[1],
Z[0]+Raise[2][0]+View->Offset[2]);
sprintf(Num, View->Format, d); sprintf(Num, View->Format, d);
Draw_String(Num); Draw_String(Num);
} }
else 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, ...@@ -126,7 +122,7 @@ void Draw_ScalarLine(Post_View *View,
for(k=0 ; k<2 ; k++) for(k=0 ; k<2 ; k++)
RaiseFill(k, Val[k], ValMin, Raise); 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){ if(View->IntervalsType == DRAW_POST_NUMERIC){
...@@ -135,9 +131,9 @@ void Draw_ScalarLine(Post_View *View, ...@@ -135,9 +131,9 @@ void Draw_ScalarLine(Post_View *View,
if(d >= ValMin && d <= ValMax){ if(d >= ValMin && d <= ValMax){
Palette2(View,ValMin,ValMax,d); Palette2(View,ValMin,ValMax,d);
sprintf(Num, View->Format, d); sprintf(Num, View->Format, d);
glRasterPos3d((X[0]+Raise[0][0] + X[1]+Raise[0][1])/2. + View->Offset[0], glRasterPos3d((X[0]+Raise[0][0] + X[1]+Raise[0][1])/2.,
(Y[0]+Raise[1][0] + Y[1]+Raise[1][1])/2. + View->Offset[1], (Y[0]+Raise[1][0] + Y[1]+Raise[1][1])/2.,
(Z[0]+Raise[2][0] + Z[1]+Raise[2][1])/2. + View->Offset[2]); (Z[0]+Raise[2][0] + Z[1]+Raise[2][1])/2.);
Draw_String(Num); Draw_String(Num);
} }
...@@ -150,13 +146,9 @@ void Draw_ScalarLine(Post_View *View, ...@@ -150,13 +146,9 @@ void Draw_ScalarLine(Post_View *View,
Val[1] >= ValMin && Val[1] <= ValMax){ Val[1] >= ValMin && Val[1] <= ValMax){
glBegin(GL_LINES); glBegin(GL_LINES);
Palette2(View,ValMin,ValMax,Val[0]); Palette2(View,ValMin,ValMax,Val[0]);
glVertex3d(X[0]+View->Offset[0]+Raise[0][0], glVertex3d(X[0]+Raise[0][0], Y[0]+Raise[1][0], Z[0]+Raise[2][0]);
Y[0]+View->Offset[1]+Raise[1][0],
Z[0]+View->Offset[2]+Raise[2][0]);
Palette2(View,ValMin,ValMax,Val[1]); Palette2(View,ValMin,ValMax,Val[1]);
glVertex3d(X[1]+View->Offset[0]+Raise[0][1], glVertex3d(X[1]+Raise[0][1], Y[1]+Raise[1][1], Z[1]+Raise[2][1]);
Y[1]+View->Offset[1]+Raise[1][1],
Z[1]+View->Offset[2]+Raise[2][1]);
glEnd(); glEnd();
} }
else{ else{
...@@ -174,7 +166,7 @@ void Draw_ScalarLine(Post_View *View, ...@@ -174,7 +166,7 @@ void Draw_ScalarLine(Post_View *View,
ValMin,ValMax,Xp,Yp,Zp,&nb,value); ValMin,ValMax,Xp,Yp,Zp,&nb,value);
if(nb == 2){ if(nb == 2){
for(i=0;i<2;i++) RaiseFill(i,value[i],ValMin,Raise); 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{ else{
...@@ -183,7 +175,7 @@ void Draw_ScalarLine(Post_View *View, ...@@ -183,7 +175,7 @@ void Draw_ScalarLine(Post_View *View,
thev, ValMin,ValMax,Xp,Yp,Zp,&nb); thev, ValMin,ValMax,Xp,Yp,Zp,&nb);
if(nb){ if(nb){
RaiseFill(0,thev,ValMin,Raise); 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, ...@@ -279,7 +271,7 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals,
if(preproNormals) return; 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){ if(View->IntervalsType == DRAW_POST_NUMERIC){
...@@ -287,12 +279,9 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals, ...@@ -287,12 +279,9 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals,
if(d >= ValMin && d <= ValMax){ if(d >= ValMin && d <= ValMax){
Palette2(View,ValMin,ValMax,d); Palette2(View,ValMin,ValMax,d);
sprintf(Num, View->Format, d); sprintf(Num, View->Format, d);
glRasterPos3d( (X[0]+Raise[0][0] + X[1]+Raise[0][1] + X[2]+Raise[0][2])/3. + 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.,
(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.);
View->Offset[1],
(Z[0]+Raise[2][0] + Z[1]+Raise[2][1] + Z[2]+Raise[2][2])/3. +
View->Offset[2] );
Draw_String(Num); Draw_String(Num);
} }
...@@ -306,19 +295,13 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals, ...@@ -306,19 +295,13 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals,
glBegin(GL_TRIANGLES); glBegin(GL_TRIANGLES);
Palette2(View,ValMin,ValMax,Val[0]); Palette2(View,ValMin,ValMax,Val[0]);
glNormal3dv(&norms[0]); glNormal3dv(&norms[0]);
glVertex3d(X[0]+View->Offset[0]+Raise[0][0], glVertex3d(X[0]+Raise[0][0], Y[0]+Raise[1][0], Z[0]+Raise[2][0]);
Y[0]+View->Offset[1]+Raise[1][0],
Z[0]+View->Offset[2]+Raise[2][0]);
Palette2(View,ValMin,ValMax,Val[1]); Palette2(View,ValMin,ValMax,Val[1]);
glNormal3dv(&norms[3]); glNormal3dv(&norms[3]);
glVertex3d(X[1]+View->Offset[0]+Raise[0][1], glVertex3d(X[1]+Raise[0][1], Y[1]+Raise[1][1], Z[1]+Raise[2][1]);
Y[1]+View->Offset[1]+Raise[1][1],
Z[1]+View->Offset[2]+Raise[2][1]);
Palette2(View,ValMin,ValMax,Val[2]); Palette2(View,ValMin,ValMax,Val[2]);
glNormal3dv(&norms[6]); glNormal3dv(&norms[6]);
glVertex3d(X[2]+View->Offset[0]+Raise[0][2], glVertex3d(X[2]+Raise[0][2], Y[2]+Raise[1][2], Z[2]+Raise[2][2]);
Y[2]+View->Offset[1]+Raise[1][2],
Z[2]+View->Offset[2]+Raise[2][2]);
glEnd(); glEnd();
} }
else{ else{
...@@ -330,9 +313,7 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals, ...@@ -330,9 +313,7 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals,
for(i=0 ; i<nb ; i++){ for(i=0 ; i<nb ; i++){
Palette2(View,ValMin,ValMax,value[i]); Palette2(View,ValMin,ValMax,value[i]);
RaiseFill(i,value[i],ValMin,Raise); RaiseFill(i,value[i],ValMin,Raise);
glVertex3d(Xp[i]+View->Offset[0]+Raise[0][i], glVertex3d(Xp[i]+Raise[0][i], Yp[i]+Raise[1][i], Zp[i]+Raise[2][i]);
Yp[i]+View->Offset[1]+Raise[1][i],
Zp[i]+View->Offset[2]+Raise[2][i]);
} }
glEnd(); glEnd();
} }
...@@ -349,7 +330,7 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals, ...@@ -349,7 +330,7 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals,
Xp,Yp,Zp,&nb,value); Xp,Yp,Zp,&nb,value);
if(nb >= 3){ if(nb >= 3){
for(i=0 ; i<nb ; i++) RaiseFill(i,value[i],ValMin,Raise); 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{ else{
...@@ -359,7 +340,7 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals, ...@@ -359,7 +340,7 @@ void Draw_ScalarTriangle(Post_View *View, int preproNormals,
thev, ValMin,ValMax,Xp,Yp,Zp,&nb); thev, ValMin,ValMax,Xp,Yp,Zp,&nb);
if(nb == 2){ if(nb == 2){
for(i=0 ; i<2 ; i++) RaiseFill(i,thev,ValMin,Raise); 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, ...@@ -413,7 +394,7 @@ void Draw_ScalarTetrahedron(Post_View *View, int preproNormals,
for(k=0 ; k<4 ; k++) for(k=0 ; k<4 ; k++)
RaiseFill(k, Val[k], ValMin, Raise); 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){ if(!preproNormals && View->IntervalsType == DRAW_POST_NUMERIC){
...@@ -422,11 +403,11 @@ void Draw_ScalarTetrahedron(Post_View *View, int preproNormals, ...@@ -422,11 +403,11 @@ void Draw_ScalarTetrahedron(Post_View *View, int preproNormals,
Palette2(View,ValMin,ValMax,d); Palette2(View,ValMin,ValMax,d);
sprintf(Num, View->Format, d); sprintf(Num, View->Format, d);
glRasterPos3d(0.25 * (X[0]+Raise[0][0] + X[1]+Raise[0][1] + 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] + 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] + 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); Draw_String(Num);
} }
...@@ -436,7 +417,7 @@ void Draw_ScalarTetrahedron(Post_View *View, int preproNormals, ...@@ -436,7 +417,7 @@ void Draw_ScalarTetrahedron(Post_View *View, int preproNormals,
if(!preproNormals) Palette(View,View->NbIso,k); if(!preproNormals) Palette(View,View->NbIso,k);
IsoSimplex(View, preproNormals, X, Y, Z, Val, IsoSimplex(View, preproNormals, X, Y, Z, Val,
View->GVFI(ValMin,ValMax,View->NbIso,k), 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, ...@@ -467,9 +448,9 @@ void Draw_VectorSimplex(int nbnod, Post_View *View,
fact = View->ArrowScale/50. ; fact = View->ArrowScale/50. ;
for(k=0 ; k<nbnod ; k++){ for(k=0 ; k<nbnod ; k++){
xx[k] = X[k] + fact * Val[k][0] + Raise[0][k] + View->Offset[0]; xx[k] = X[k] + fact * Val[k][0] + Raise[0][k];
yy[k] = Y[k] + fact * Val[k][1] + Raise[1][k] + View->Offset[1]; yy[k] = Y[k] + fact * Val[k][1] + Raise[1][k];
zz[k] = Z[k] + fact * Val[k][2] + Raise[2][k] + View->Offset[2]; zz[k] = Z[k] + fact * Val[k][2] + Raise[2][k];
} }
switch(nbnod){ switch(nbnod){
...@@ -486,9 +467,9 @@ void Draw_VectorSimplex(int nbnod, Post_View *View, ...@@ -486,9 +467,9 @@ void Draw_VectorSimplex(int nbnod, Post_View *View,
dz = V[3*(View->TimeStep-j)+2]; dz = V[3*(View->TimeStep-j)+2];
dd = sqrt(dx*dx+dy*dy+dz*dz); dd = sqrt(dx*dx+dy*dy+dz*dz);
Palette2(View,ValMin,ValMax,dd); Palette2(View,ValMin,ValMax,dd);
glVertex3d(X[0] + fact*dx + Raise[0][0] + View->Offset[0], glVertex3d(X[0] + fact*dx + Raise[0][0],
Y[0] + fact*dy + Raise[1][0] + View->Offset[1], Y[0] + fact*dy + Raise[1][0],
Z[0] + fact*dz + Raise[2][0] + View->Offset[2]); Z[0] + fact*dz + Raise[2][0]);
} }
glEnd(); glEnd();
} }
...@@ -500,7 +481,7 @@ void Draw_VectorSimplex(int nbnod, Post_View *View, ...@@ -500,7 +481,7 @@ void Draw_VectorSimplex(int nbnod, Post_View *View,
return; 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 || if(View->ArrowLocation == DRAW_POST_LOCATE_COG ||
View->IntervalsType == DRAW_POST_NUMERIC){ View->IntervalsType == DRAW_POST_NUMERIC){
...@@ -516,9 +497,7 @@ void Draw_VectorSimplex(int nbnod, Post_View *View, ...@@ -516,9 +497,7 @@ void Draw_VectorSimplex(int nbnod, Post_View *View,
if(dd!=0.0 && dd>=ValMin && dd<=ValMax){ if(dd!=0.0 && dd>=ValMin && dd<=ValMax){
Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,dd)); Palette(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,dd));
if(View->IntervalsType == DRAW_POST_NUMERIC){ if(View->IntervalsType == DRAW_POST_NUMERIC){
glRasterPos3d(xc + View->Offset[0], glRasterPos3d(xc, yc, zc);
yc + View->Offset[1],
zc + View->Offset[2]);
sprintf(Num, View->Format, dd); sprintf(Num, View->Format, dd);
Draw_String(Num); Draw_String(Num);
} }
...@@ -531,8 +510,7 @@ void Draw_VectorSimplex(int nbnod, Post_View *View, ...@@ -531,8 +510,7 @@ void Draw_VectorSimplex(int nbnod, Post_View *View,
} }
RaiseFill(0, dd, ValMin, Raise); RaiseFill(0, dd, ValMin, Raise);
Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO,
xc, yc, zc, fact*dd, fact*dx, fact*dy, fact*dz, xc, yc, zc, fact*dd, fact*dx, fact*dy, fact*dz, Raise);
View->Offset, Raise);
} }
} }
} }
...@@ -549,8 +527,7 @@ void Draw_VectorSimplex(int nbnod, Post_View *View, ...@@ -549,8 +527,7 @@ void Draw_VectorSimplex(int nbnod, Post_View *View,
RaiseFill(0, d[k], ValMin, Raise); RaiseFill(0, d[k], ValMin, Raise);
Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO,
X[k], Y[k], Z[k], X[k], Y[k], Z[k],
fact*d[k], fact*Val[k][0], fact*Val[k][1], fact*Val[k][2], fact*d[k], fact*Val[k][0], fact*Val[k][1], fact*Val[k][2], Raise);
View->Offset, Raise);
} }
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment