Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
SimplicialMeshActor.h
Go to the documentation of this file.
1/* This file is part of MODEL, the Mechanics Of Defect Evolution Library.
2 *
3 * Copyright (C) 2011 by Giacomo Po <gpo@ucla.edu>.
4 *
5 * model is distributed without any warranty under the
6 * GNU General Public License (GPL) v2 <http://www.gnu.org/licenses/>.
7 */
8
9#ifndef model_SimplicialMeshActor_H_
10#define model_SimplicialMeshActor_H_
11
12#include <random>
13#include <algorithm>
14
15#include <QGroupBox>
16#include <QGridLayout>
17#include <QCheckBox>
18#include <QLabel>
19#include <QWidget>
20#include <QSlider>
21
22#include <vtkVersion.h>
23#include <vtkSmartPointer.h>
24#include <vtkPolyData.h>
25#include <vtkPolyDataMapper.h>
26#include <vtkActor.h>
27#include <vtkProperty.h>
28#include <vtkRenderer.h>
29#include <vtkTriangle.h>
30#include <vtkCellData.h>
31#include <vtkPlane.h>
32#include <vtkClipPolyData.h>
33#include <vtkRenderWindowInteractor.h>
34#include <vtkRenderWindow.h>
35#include <vtkRenderer.h>
36#include <vtkActor.h>
37#include <vtkCamera.h>
38#include <vtkPolyDataMapper.h>
39#include <vtkDataSetMapper.h>
40#include <vtkPolyData.h>
41#include <vtkStripper.h>
42#include <vtkFeatureEdges.h>
43#include <vtkActor.h>
44#include <vtkProperty.h>
45#include <vtkPolyDataMapper.h>
46#include <vtkClipPolyData.h>
47#include <vtkPlane.h>
48#include <vtkSphereSource.h>
49#include <vtkPlane.h>
50#include <vtkCommand.h>
51#include <vtkImplicitPlaneWidget2.h>
52#include <vtkImplicitPlaneRepresentation.h>
53#include <vtkNamedColors.h>
54#include <vtkLookupTable.h>
55#include <vtkUnsignedCharArray.h>
56#include <vtkPointData.h>
57#include <vtkGenericOpenGLRenderWindow.h>
58#include <vtkPlane.h>
59#include <vtkCommand.h>
60#include <vtkImplicitPlaneWidget2.h>
61#include <vtkImplicitPlaneRepresentation.h>
62#include <vtkAxesActor.h>
63#include <vtkOrientationMarkerWidget.h>
64#include <vtkCubeAxesActor.h>
65#include <vtkGlyph3D.h>
66#include <vtkArrowSource.h>
67#include <vtkDoubleArray.h>
68#include <vtkLabeledDataMapper.h>
69#include <vtkActor2D.h>
70#include <vtkProperty2D.h>
71
72#include <TextFileParser.h>
73
74#include <SimplicialMesh.h>
75//#include <FEM/MeshNodeIO.h>
76
77//#include <VertexReader.h>
78
79// See this for plane interactor
80// https://www.vtk.org/Wiki/VTK/Examples/Cxx/Widgets/ImplicitPlaneWidget2
81
82// camera
83// https://www.vtk.org/pipermail/vtkusers/2014-January/082864.html
84
85namespace model
86{
87
88
89//struct FieldActorCallback : public vtkCommand
90//
91//{
92// vtkPlane *plane;
94//
95//
96// FieldActorCallback():
97// /* init */ plane(0)
98// {
99// }
100//
101// static FieldActorCallback *New()
102// {
103// return new FieldActorCallback;
104//
105// }
106//
107// virtual void Execute(vtkObject *caller, unsigned long, void*)
108// {
109// vtkImplicitPlaneWidget2 *planeWidget = reinterpret_cast<vtkImplicitPlaneWidget2*>(caller);
110// vtkImplicitPlaneRepresentation *rep = reinterpret_cast<vtkImplicitPlaneRepresentation*>(planeWidget->GetRepresentation());
111// rep->GetPlane(this->plane);
112// }
113//};
114
115 struct SimplicialMeshActor : public QWidget
116 {
117
118 Q_OBJECT
119
120 private slots:
121
122 void modify();
123
124
125 public:
126 QGridLayout* mainLayout;
127 QCheckBox* showMesh;
131
132// QCheckBox* showGrainColors;
135 QCheckBox* showClipPlane;
137 QCheckBox* showAxes;
138 // QSlider* sliderAxes;
139
141
142 vtkSmartPointer<vtkPolyData> labelPolyData;
143 vtkSmartPointer<vtkLabeledDataMapper> labelMapper;
144 vtkSmartPointer<vtkActor2D> labelActor;
145
146
147 vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindow;
148 vtkRenderer* const renderer;
150
151 double dispCorr;
152
153 std::map<size_t,std::pair<size_t,Eigen::Matrix<double,3,1>>> sIDtoVtkPointsMap;
154
155 vtkSmartPointer<vtkPoints> pts;
156 vtkSmartPointer<vtkPolyData> polydata;
157 vtkSmartPointer<vtkPolyDataMapper> mapper;
158 vtkSmartPointer<vtkActor> actor;
159
160 vtkSmartPointer<vtkPoints> facePts;
161 vtkSmartPointer<vtkPolyData> facePolydata;
162 vtkSmartPointer<vtkPolyDataMapper> faceMapper;
163 vtkSmartPointer<vtkActor> faceActor;
164
165
166 vtkSmartPointer<vtkUnsignedCharArray> gbColors;
167 vtkSmartPointer<vtkPoints> gbPoints;
168 vtkSmartPointer<vtkCellArray> gbTriangles;
169 vtkSmartPointer<vtkPolyData> gbTrianglePolyData;
170 vtkSmartPointer<vtkPolyDataMapper> gbMapper;
171 vtkSmartPointer<vtkActor> gbActor;
172
173// vtkSmartPointer<vtkUnsignedCharArray> gbColors;
174// vtkSmartPointer<vtkPoints> gbPoints;
175// vtkSmartPointer<vtkCellArray> gbTriangles;
176// vtkSmartPointer<vtkPolyData> gbTrianglePolyData;
177 vtkSmartPointer<vtkPolyDataMapper> pfMapper;
178 vtkSmartPointer<vtkActor> pfActor;
179
180
181 vtkSmartPointer<vtkPlane> clipPlane;
182 vtkSmartPointer<vtkClipPolyData> clipper;
183 vtkSmartPointer<vtkPolyData> clippedPolyData;
184 vtkSmartPointer<vtkDataSetMapper> clipMapper;
185 vtkSmartPointer<vtkActor> clipActor;
186
187 vtkSmartPointer<vtkCubeAxesActor> cubeAxesActor;
188// vtkSmartPointer<vtkAxesActor> axes;
189// vtkSmartPointer<vtkOrientationMarkerWidget> axesWidget;
190
191 vtkSmartPointer<vtkPolyData> periodicityPolydata;
192 vtkSmartPointer<vtkGlyph3D> periodicityGlyphs;
193 vtkSmartPointer<vtkPolyDataMapper> periodicityMapper;
194 vtkSmartPointer<vtkActor> periodicityActor;
195
196
197// vtkSmartPointer<FieldActorCallback> myCallback;
198// vtkSmartPointer<vtkImplicitPlaneRepresentation> rep;
199// vtkSmartPointer<vtkImplicitPlaneWidget2> planeWidget;
200
201
202
203 SimplicialMeshActor(vtkSmartPointer<vtkGenericOpenGLRenderWindow>,vtkRenderer* const renderer_in, const SimplicialMesh<3>& mesh_in);
204 void modifyPts();
205
206
207 };
208
209} // namespace model
210#endif
211
212
213
214
215
216
217
vtkSmartPointer< vtkPolyData > facePolydata
vtkSmartPointer< vtkActor2D > labelActor
vtkSmartPointer< vtkPoints > gbPoints
const SimplicialMesh< 3 > & mesh
vtkSmartPointer< vtkLabeledDataMapper > labelMapper
SimplicialMeshActor(vtkSmartPointer< vtkGenericOpenGLRenderWindow >, vtkRenderer *const renderer_in, const SimplicialMesh< 3 > &mesh_in)
vtkSmartPointer< vtkActor > actor
vtkSmartPointer< vtkPoints > pts
vtkSmartPointer< vtkActor > periodicityActor
vtkSmartPointer< vtkPolyDataMapper > gbMapper
vtkSmartPointer< vtkPoints > facePts
vtkSmartPointer< vtkPolyDataMapper > periodicityMapper
std::map< size_t, std::pair< size_t, Eigen::Matrix< double, 3, 1 > > > sIDtoVtkPointsMap
vtkSmartPointer< vtkGenericOpenGLRenderWindow > renderWindow
vtkSmartPointer< vtkPolyData > polydata
vtkSmartPointer< vtkPolyDataMapper > faceMapper
vtkSmartPointer< vtkPolyData > labelPolyData
vtkSmartPointer< vtkGlyph3D > periodicityGlyphs
vtkSmartPointer< vtkCellArray > gbTriangles
vtkSmartPointer< vtkPolyDataMapper > pfMapper
vtkSmartPointer< vtkCubeAxesActor > cubeAxesActor
vtkSmartPointer< vtkClipPolyData > clipper
vtkSmartPointer< vtkActor > clipActor
vtkSmartPointer< vtkDataSetMapper > clipMapper
vtkSmartPointer< vtkPolyData > periodicityPolydata
vtkSmartPointer< vtkPolyData > gbTrianglePolyData
vtkSmartPointer< vtkPlane > clipPlane
vtkSmartPointer< vtkUnsignedCharArray > gbColors
vtkSmartPointer< vtkActor > pfActor
vtkSmartPointer< vtkPolyDataMapper > mapper
vtkSmartPointer< vtkActor > faceActor
vtkSmartPointer< vtkActor > gbActor
vtkSmartPointer< vtkPolyData > clippedPolyData