VTK
vtkAMRCutPlane.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkAMRCutPlane.h
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14 =========================================================================*/
24#ifndef vtkAMRCutPlane_h
25#define vtkAMRCutPlane_h
26
27#include "vtkFiltersAMRModule.h" // For export macro
29
30#include <vector> // For STL vector
31#include <map> // For STL map
32
36class vtkInformation;
38class vtkIndent;
39class vtkPlane;
40class vtkUniformGrid;
41class vtkCell;
42class vtkPoints;
43class vtkCellArray;
44class vtkPointData;
45class vtkCellData;
46
47class VTKFILTERSAMR_EXPORT vtkAMRCutPlane : public vtkMultiBlockDataSetAlgorithm
48{
49public:
52 void PrintSelf(ostream &oss, vtkIndent indent );
53
55
58 vtkSetVector3Macro(Center, double);
60
62
65 vtkSetVector3Macro(Normal, double);
67
69
72 vtkSetMacro(LevelOfResolution, int);
73 vtkGetMacro(LevelOfResolution, int);
75
77
80 vtkSetMacro(UseNativeCutter, bool);
81 vtkGetMacro(UseNativeCutter, bool);
82 vtkBooleanMacro(UseNativeCutter, bool);
84
86
91 vtkGetMacro(Controller, vtkMultiProcessController*);
93
94 // Standard pipeline routines
95
96 virtual int RequestData(
100
101
107 vtkInformation *rqst,
108 vtkInformationVector **inputVector,
109 vtkInformationVector *outputVector );
110
116
117protected:
120
126
131 vtkUniformGrid *grid, vtkCell* cell,
132 std::map<vtkIdType,vtkIdType>& gridPntMapping,
133 vtkPoints *nodes,
134 vtkCellArray *cells );
135
141 vtkUniformGrid *grid,
142 std::map<vtkIdType,vtkIdType>& gridPntMapping,
143 vtkIdType NumNodes,
144 vtkPointData *PD );
145
151 vtkUniformGrid *grid,
152 std::vector<vtkIdType>& cellIdxList,
153 vtkCellData *CD);
154
162
163 // Descriription:
164 // Initializes the cut-plane center given the min/max bounds.
165 void InitializeCenter( double min[3], double max[3] );
166
168
171 bool PlaneIntersectsAMRBox( vtkPlane* pl, double bounds[6] );
172 bool PlaneIntersectsAMRBox( double plane[4], double bounds[6] );
174
179
184
189 vtkPlane *cutPlane,
190 unsigned int blockIdx,
191 vtkUniformGrid *grid, vtkMultiBlockDataSet *dataSet );
192
194 double Center[3];
195 double Normal[3];
199
200 std::vector<int> BlocksToLoad;
201
202private:
203 vtkAMRCutPlane(const vtkAMRCutPlane& ) VTK_DELETE_FUNCTION;
204 void operator=(const vtkAMRCutPlane& ) VTK_DELETE_FUNCTION;
205};
206
207#endif /* vtkAMRCutPlane_h */
A concrete instance of vtkMultiBlockDataSet that provides functionality for cutting an AMR dataset (a...
bool IsAMRData2D(vtkOverlappingAMR *input)
A utility function that checks if the input AMR data is 2-D.
vtkPlane * GetCutPlane(vtkOverlappingAMR *metadata)
Returns the cut-plane defined by a vtkCutPlane instance based on the user-supplied center and normal.
void ExtractCellFromGrid(vtkUniformGrid *grid, vtkCell *cell, std::map< vtkIdType, vtkIdType > &gridPntMapping, vtkPoints *nodes, vtkCellArray *cells)
Extracts cell.
std::vector< int > BlocksToLoad
void InitializeCenter(double min[3], double max[3])
void ComputeAMRBlocksToLoad(vtkPlane *p, vtkOverlappingAMR *m)
Given a cut-plane, p, and the metadata, m, this method computes which blocks need to be loaded.
static vtkAMRCutPlane * New()
bool PlaneIntersectsAMRBox(double plane[4], double bounds[6])
virtual int FillInputPortInformation(int port, vtkInformation *info)
Fill the input port information objects for this algorithm.
virtual ~vtkAMRCutPlane()
void PrintSelf(ostream &oss, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
void CutAMRBlock(vtkPlane *cutPlane, unsigned int blockIdx, vtkUniformGrid *grid, vtkMultiBlockDataSet *dataSet)
Applies cutting to an AMR block.
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
Performs upstream requests to the reader.
vtkMultiProcessController * Controller
virtual int FillOutputPortInformation(int port, vtkInformation *info)
Fill the output port information objects for this algorithm.
virtual int RequestInformation(vtkInformation *rqst, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
Gets the metadata from upstream module and determines which blocks should be loaded by this instance.
void ExtractPointDataFromGrid(vtkUniformGrid *grid, std::map< vtkIdType, vtkIdType > &gridPntMapping, vtkIdType NumNodes, vtkPointData *PD)
Given the grid and a subset ID pair, grid IDs mapping to the extracted grid IDs, extract the point da...
bool PlaneIntersectsAMRBox(vtkPlane *pl, double bounds[6])
Determines if a plane intersects with an AMR box.
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
bool PlaneIntersectsCell(vtkPlane *pl, vtkCell *cell)
Determines if a plane intersects with a grid cell.
void ExtractCellDataFromGrid(vtkUniformGrid *grid, std::vector< vtkIdType > &cellIdxList, vtkCellData *CD)
Given the grid and the list of cells that are extracted, extract the corresponding cell data.
object to represent cell connectivity
Definition: vtkCellArray.h:51
represent and manipulate cell attribute data
Definition: vtkCellData.h:39
abstract class to specify cell behavior
Definition: vtkCell.h:60
a simple class to control print indentation
Definition: vtkIndent.h:40
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Superclass for algorithms that produce only vtkMultiBlockDataSet as output.
Composite dataset that organizes datasets into blocks.
Multiprocessing communication superclass.
hierarchical dataset of vtkUniformGrids
perform various plane computations
Definition: vtkPlane.h:38
represent and manipulate point attribute data
Definition: vtkPointData.h:38
represent and manipulate 3D points
Definition: vtkPoints.h:40
image data with blanking
@ Normal
Definition: vtkX3D.h:45
@ info
Definition: vtkX3D.h:376
@ port
Definition: vtkX3D.h:447
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
int vtkIdType
Definition: vtkType.h:287
#define max(a, b)