12 #ifndef GLVIS_VSSOLUTION_3D_HPP
13 #define GLVIS_VSSOLUTION_3D_HPP
25 int drawmesh, drawelems,
shading, draworder;
50 void GetFaceNormals(
const int FaceNo,
const int side,
51 const IntegrationRule &ir, DenseMatrix &normals);
53 void DrawRefinedSurf (
int n,
double *points,
int elem,
int func,
55 void DrawRefinedSurf (
int n, DenseMatrix &pointmat,
56 Vector &values, Array<int> &RefGeoms);
57 void DrawRefinedSurfLevelLines (
int n, DenseMatrix &pointmat,
58 Vector &values, Array<int> &RefGeoms);
59 void DrawRefinedSurfEdges (
int n, DenseMatrix &pointmat,
60 Vector &values, Array<int> &RefEdges,
62 void LiftRefinedSurf (
int n, DenseMatrix &pointmat,
63 Vector &values,
int *RG);
64 void DrawTetLevelSurf(
gl3::GlDrawable& target,
const DenseMatrix &verts,
66 const int *ind,
const Array<double> &levels,
67 const DenseMatrix *grad = NULL);
69 static int GetPyramidFaceSplits(
const Array<bool> &quad_diag,
70 const Array<int> &faces,
71 const Array<int> &ofaces);
73 const DenseMatrix &verts,
74 const Vector &vals,
const int *RG,
75 const int np,
const int face_splits,
76 const DenseMatrix *grad = NULL);
78 static int GetWedgeFaceSplits(
const Array<bool> &quad_diag,
79 const Array<int> &faces,
80 const Array<int> &ofaces);
82 const DenseMatrix &verts,
83 const Vector &vals,
const int *RG,
84 const int np,
const int face_splits,
85 const DenseMatrix *grad = NULL);
87 static int GetHexFaceSplits(
const Array<bool> &quad_diag,
88 const Array<int> &faces,
89 const Array<int> &ofaces);
91 const DenseMatrix &verts,
92 const Vector &vals,
const int *RG,
93 const int nh,
const int face_splits,
94 const DenseMatrix *grad = NULL);
96 int GetAutoRefineFactor();
101 for (
int j = 0; j < vertices.Size(); j++)
103 if (node_pos[vertices[j]] >= 0.0) { n++; }
105 return (n < vertices.Size());
119 void NewMeshAndSolution(Mesh *new_m, Vector *new_sol,
120 GridFunction *new_u = NULL);
124 virtual std::string GetHelpString()
const;
126 virtual void FindNewBox(
bool prepare);
127 virtual void FindNewValueRange(
bool prepare);
131 virtual void PrepareFlat();
132 virtual void PrepareLines();
133 virtual void Prepare();
134 virtual void PrepareOrderingCurve();
139 virtual void glTF_Export();
142 { drawelems = !drawelems; Prepare(); }
144 void ToggleDrawMesh();
150 void ToggleShading();
152 virtual void SetShading(
int,
bool);
153 virtual void SetRefineFactors(
int,
int);
154 virtual void AutoRefine();
155 virtual void ToggleAttributes(Array<int> &attr_list);
159 void CuttingPlaneFunc (
int type);
162 const DenseMatrix &verts,
const Vector &vert_dist,
163 const Vector &vals,
const Geometry::Type geom,
164 const int *elems,
int num_elems,
int func);
166 const DenseMatrix &verts,
const Vector &vert_dist,
167 const Vector &vals,
const Geometry::Type geom,
168 const int *faces,
int num_faces);
172 void PrepareLines2();
173 virtual void PrepareCuttingPlane();
174 void PrepareCuttingPlane2();
175 void PrepareCuttingPlaneLines();
176 void PrepareCuttingPlaneLines2();
177 void PrepareLevelSurf();
178 void ToggleCuttingPlane();
179 void ToggleCPDrawElems();
180 void ToggleCPDrawMesh();
181 void ToggleCPAlgorithm();
182 void MoveLevelSurf(
int);
183 void NumberOfLevelSurf(
int);
184 virtual void EventUpdateColors();
186 { PrepareLines(); PrepareCuttingPlaneLines(); }
187 virtual void UpdateValueRange(
bool prepare);
191 if (drawmesh != i % 3)
gl3::GlDrawable cplane_buf
gl3::GlDrawable lsurf_buf
Array< int > bdr_attr_to_show
virtual int GetDrawMesh()
virtual void PrepareRuler()
void ToggleDrawOrdering()
virtual void SetDrawMesh(int i)
gl3::GlDrawable cplines_buf
gl3::GlDrawable other_buf
virtual void UpdateLevelLines()
virtual void PrepareRuler()
void SetGridFunction(GridFunction *gf)
bool CheckPositions(Array< int > &vertices) const
gl3::GlDrawable order_noarrow_buf