1 // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 // + This file is part of enGrid. +
5 // + Copyright 2008-2014 enGits GmbH +
7 // + enGrid is free software: you can redistribute it and/or modify +
8 // + it under the terms of the GNU General Public License as published by +
9 // + the Free Software Foundation, either version 3 of the License, or +
10 // + (at your option) any later version. +
12 // + enGrid is distributed in the hope that it will be useful, +
13 // + but WITHOUT ANY WARRANTY; without even the implied warranty of +
14 // + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +
15 // + GNU General Public License for more details. +
17 // + You should have received a copy of the GNU General Public License +
18 // + along with enGrid. If not, see <http://www.gnu.org/licenses/>. +
20 // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
25 #include "surfaceoperation.h"
27 class FillPlane
: public SurfaceOperation
30 protected: // attributes
38 bool m_InverseDirection
;
41 QVector
<vtkIdType
> m_NodeMap
;
46 void setupTransformation();
47 void createEdgesOnPlane(vtkUnstructuredGrid
*edge_grid
);
48 void closeLoops(vtkUnstructuredGrid
*edge_grid
);
49 vec3_t
toPlane(vec3_t x
);
50 vec3_t
fromPlane(vec3_t x
);
51 bool isWithinTolerance(vec3_t x
);
52 void gridToPlane(vtkUnstructuredGrid
*edge_grid
);
53 void gridFromPlane(vtkUnstructuredGrid
*edge_grid
);
54 void triangulate(vtkPolyData
*edge_pdata
, vtkUnstructuredGrid
*tri_grid
, int bc
= -1);
55 void order(vtkUnstructuredGrid
*edge_grid
, vtkPolyData
*edge_pdata
);
56 void orderGeometrically(vtkUnstructuredGrid
*edge_grid
, QList
<vtkIdType
> &poly_nodes
);
58 virtual void operate();
64 void setOrigin(vec3_t x
) { m_X0
= x
; }
65 void setNormal(vec3_t n
) { m_N
= n
; }
66 void setDistanceTolerance(double t
) { m_DistTol
= t
; }
67 void setAngularTolerance(double a
) { m_AngleTol
= a
; }
68 void setInverseDirectionOn() { m_InverseDirection
= true; }
69 void setInverseDirectionOff() { m_InverseDirection
= false; }
70 int getBC() { return m_BC
; }