ParaView
vtkKdTreeGenerator.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: ParaView
4  Module: vtkKdTreeGenerator.h
5 
6  Copyright (c) Kitware, Inc.
7  All rights reserved.
8  See Copyright.txt or http://www.paraview.org/HTML/Copyright.html 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 =========================================================================*/
46 #ifndef vtkKdTreeGenerator_h
47 #define vtkKdTreeGenerator_h
48 
49 #include "vtkObject.h"
50 #include "vtkPVVTKExtensionsRenderingModule.h" // needed for export macro
51 
52 class vtkDataObject;
53 class vtkExtentTranslator;
54 class vtkInformation;
55 class vtkKdNode;
56 class vtkKdTreeGeneratorVector;
57 class vtkPKdTree;
58 
59 class VTKPVVTKEXTENSIONSRENDERING_EXPORT vtkKdTreeGenerator : public vtkObject
60 {
61 public:
62  static vtkKdTreeGenerator* New();
63  vtkTypeMacro(vtkKdTreeGenerator, vtkObject);
64  void PrintSelf(ostream& os, vtkIndent indent);
65 
67 
70  void SetKdTree(vtkPKdTree*);
71  vtkGetObjectMacro(KdTree, vtkPKdTree);
73 
75 
78  vtkSetMacro(NumberOfPieces, int);
79  vtkGetMacro(NumberOfPieces, int);
81 
85  bool BuildTree(vtkExtentTranslator* translator, const int extents[6], const double origin[3],
86  const double spacing[4]);
87 
88 protected:
91 
93 
96  void SetExtentTranslator(vtkExtentTranslator*);
97  vtkGetObjectMacro(ExtentTranslator, vtkExtentTranslator);
99 
101 
104  vtkSetVector6Macro(WholeExtent, int);
105  vtkGetVector6Macro(WholeExtent, int);
107 
109  vtkSetVector3Macro(Origin, double);
110  vtkSetVector3Macro(Spacing, double);
112 
117  void FormRegions();
118 
119  int FormTree(vtkKdNode* parent, vtkKdTreeGeneratorVector& regions_ids);
120  int CanPartition(int division_point, int dimension, vtkKdTreeGeneratorVector& ids,
121  vtkKdTreeGeneratorVector& left, vtkKdTreeGeneratorVector& right);
122 
123  // Converts extents to bounds in the kdtree.
124  bool ConvertToBounds(vtkKdNode* node);
125 
126  vtkPKdTree* KdTree;
127  vtkExtentTranslator* ExtentTranslator;
128 
129  double Origin[3];
130  double Spacing[3];
131 
132  int WholeExtent[6];
134 
135  int* Regions;
136 
137 private:
138  vtkKdTreeGenerator(const vtkKdTreeGenerator&) VTK_DELETE_FUNCTION;
139  void operator=(const vtkKdTreeGenerator&) VTK_DELETE_FUNCTION;
140 };
141 
142 #endif
vtkExtentTranslator * ExtentTranslator
creates a vtkPKdTree using the partitioning information provided by a vtkExtentTranslator.