VTK
vtkBSPCuts.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkBSPCuts.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 =========================================================================*/
15 /*----------------------------------------------------------------------------
16  Copyright (c) Sandia Corporation
17  See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
18 ----------------------------------------------------------------------------*/
19 
35 #ifndef vtkBSPCuts_h
36 #define vtkBSPCuts_h
37 
38 #include "vtkCommonDataModelModule.h" // For export macro
39 #include "vtkDataObject.h"
40 
41 class vtkKdNode;
42 
44 {
45 public:
46  static vtkBSPCuts *New();
47  vtkTypeMacro(vtkBSPCuts, vtkDataObject);
48  void PrintSelf(ostream& os, vtkIndent indent);
49 
62  void CreateCuts(double *bounds,
63  int ncuts, int *dim, double *coord,
64  int *lower, int *upper,
65  double *lowerDataCoord, double *upperDataCoord,
66  int *npoints);
67 
70  void CreateCuts(vtkKdNode *kd);
71 
75  vtkKdNode *GetKdNodeTree(){return this->Top;}
76 
80  vtkGetMacro(NumberOfCuts, int);
81 
84  int GetArrays(int len, int *dim, double *coord, int *lower, int *upper,
85  double *lowerDataCoord, double *upperDataCoord, int *npoints);
86 
89  int Equals(vtkBSPCuts *other, double tolerance = 0.0);
90 
91  void PrintTree();
92  void PrintArrays();
93 
94  //BTX
96 
98  static vtkBSPCuts* GetData(vtkInformationVector* v, int i=0);
99  //ETX
101 
103  virtual void Initialize();
104 
106 
108  virtual void ShallowCopy(vtkDataObject *src);
109  virtual void DeepCopy(vtkDataObject *src);
111 
112 protected:
113 
114  vtkBSPCuts();
115  ~vtkBSPCuts();
116 
117  static void DeleteAllDescendants(vtkKdNode *kd);
118 
119  static int CountNodes(vtkKdNode *kd);
120  static void SetMinMaxId(vtkKdNode *kd);
121  static void _PrintTree(vtkKdNode *kd, int depth);
122 
123  void BuildTree(vtkKdNode *kd, int idx);
124  int WriteArray(vtkKdNode *kd, int loc);
125 
126  void ResetArrays();
127  void AllocateArrays(int size);
128 
130 
131  // required cut information
132 
133  int NumberOfCuts;// number of cuts, also length of each array
134  int *Dim; // dimension (x/y/z - 0/1/2) where cut occurs
135  double *Coord; // location of cut along axis
136  int *Lower; // location in arrays of left (lower) child info
137  int *Upper; // location in arrays of right (lower) child info
138 
139  // optional cut information
140 
141  double *LowerDataCoord; // coordinate of uppermost data in lower half
142  double *UpperDataCoord; // coordinate of lowermost data in upper half
143  int *Npoints; // number of data values in partition
144 
145  double Bounds[6];
146 
147  vtkBSPCuts(const vtkBSPCuts&); // Not implemented
148  void operator=(const vtkBSPCuts&); // Not implemented
149 };
150 
151 #endif
static vtkDataObject * GetData(vtkInformation *info)
This class represents a single spatial region in an 3D axis aligned binary spatial partitioning...
Definition: vtkKdNode.h:44
static vtkDataObject * New()
int NumberOfCuts
Definition: vtkBSPCuts.h:133
Store vtkAlgorithm input/output information.
int * Dim
Definition: vtkBSPCuts.h:134
This class represents an axis-aligned Binary Spatial Partitioning of a 3D space.
Definition: vtkBSPCuts.h:43
double * LowerDataCoord
Definition: vtkBSPCuts.h:141
double * UpperDataCoord
Definition: vtkBSPCuts.h:142
virtual void Initialize()
double * Coord
Definition: vtkBSPCuts.h:135
int * Npoints
Definition: vtkBSPCuts.h:143
a simple class to control print indentation
Definition: vtkIndent.h:38
void PrintSelf(ostream &os, vtkIndent indent)
int * Lower
Definition: vtkBSPCuts.h:136
Store zero or more vtkInformation instances.
int * Upper
Definition: vtkBSPCuts.h:137
vtkKdNode * Top
Definition: vtkBSPCuts.h:129
vtkKdNode * GetKdNodeTree()
Definition: vtkBSPCuts.h:75
general representation of visualization data
Definition: vtkDataObject.h:64
virtual void DeepCopy(vtkDataObject *src)
#define VTKCOMMONDATAMODEL_EXPORT
virtual void ShallowCopy(vtkDataObject *src)