VTK
vtkKdTree.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkKdTree.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 
61 #ifndef vtkKdTree_h
62 #define vtkKdTree_h
63 
64 #include "vtkCommonDataModelModule.h" // For export macro
65 #include "vtkLocator.h"
66 
67 class vtkTimerLog;
68 class vtkIdList;
69 class vtkIdTypeArray;
70 class vtkIntArray;
71 class vtkPointSet;
72 class vtkPoints;
73 class vtkCellArray;
74 class vtkCell;
75 class vtkKdNode;
76 class vtkBSPCuts;
79 
81 {
82 public:
84  void PrintSelf(ostream& os, vtkIndent indent);
85 
86  static vtkKdTree *New();
87 
89 
90  vtkBooleanMacro(Timing, int);
91  vtkSetMacro(Timing, int);
92  vtkGetMacro(Timing, int);
94 
96 
97  vtkSetMacro(MinCells, int);
98  vtkGetMacro(MinCells, int);
100 
106  vtkGetMacro(NumberOfRegionsOrLess, int);
107  vtkSetMacro(NumberOfRegionsOrLess, int);
108 
113  vtkGetMacro(NumberOfRegionsOrMore, int);
114  vtkSetMacro(NumberOfRegionsOrMore, int);
115 
121  vtkGetMacro(FudgeFactor, double);
122  vtkSetMacro(FudgeFactor, double);
123 
128 
133  void SetCuts(vtkBSPCuts *cuts);
134 
137 
140 
143 
146 
149 
152 
155 
165  virtual void SetDataSet(vtkDataSet *set);
166 
170  virtual void AddDataSet(vtkDataSet *set);
171 
173 
174  virtual void RemoveDataSet(int index);
175  virtual void RemoveDataSet(vtkDataSet *set);
176  virtual void RemoveAllDataSets();
178 
181 
188 
191  vtkDataSet *GetDataSet(){ return this->GetDataSet(0); }
192 
194 
197 
201 
204  void GetBounds(double *bounds);
205 
212  void SetNewBounds(double *bounds);
213 
215 
216  vtkGetMacro(NumberOfRegions, int);
218 
220  void GetRegionBounds(int regionID, double bounds[6]);
221 
223  void GetRegionDataBounds(int regionID, double bounds[6]);
224 
226 
227  void PrintTree();
230 
232  void PrintRegion(int id);
233 
242  void CreateCellLists(int dataSetIndex, int *regionReqList,
243  int reqListSize);
244  void CreateCellLists(vtkDataSet *set, int *regionReqList,
245  int reqListSize);
246  void CreateCellLists(int *regionReqList, int listSize);
248 
250 
254  vtkSetMacro(IncludeRegionBoundaryCells, int);
255  vtkGetMacro(IncludeRegionBoundaryCells, int);
256  vtkBooleanMacro(IncludeRegionBoundaryCells, int);
258 
261 
264  vtkIdList *GetCellList(int regionID);
265 
274 
276 
290  vtkIdType GetCellLists(vtkIntArray *regions, int set,
291  vtkIdList *inRegionCells, vtkIdList *onBoundaryCells);
293  vtkIdList *inRegionCells, vtkIdList *onBoundaryCells);
294  vtkIdType GetCellLists(vtkIntArray *regions, vtkIdList *inRegionCells,
295  vtkIdList *onBoundaryCells);
297 
299 
303  int GetRegionContainingCell(int set, vtkIdType cellID);
306 
312 
314  int GetRegionContainingPoint(double x, double y, double z);
315 
319  void BuildLocator();
320 
333  double **convexRegionBounds);
334 
336 
342  int ViewOrderAllRegionsInDirection(const double directionOfProjection[3],
343  vtkIntArray *orderedList);
345 
347 
353  const double directionOfProjection[3],
354  vtkIntArray *orderedList);
356 
358 
364  int ViewOrderAllRegionsFromPosition(const double directionOfProjection[3],
365  vtkIntArray *orderedList);
367 
369 
375  const double directionOfProjection[3],
376  vtkIntArray *orderedList);
378 
380 
390  void BuildLocatorFromPoints(vtkPoints **ptArray, int numPtArrays);
392 
403 
405 
409  vtkIdType FindPoint(double x, double y, double z);
411 
413 
416  vtkIdType FindClosestPoint(double *x, double &dist2);
417  vtkIdType FindClosestPoint(double x, double y, double z, double &dist2);
419 
421 
425  double radius, const double x[3], double& dist2);
427 
429 
432  vtkIdType FindClosestPointInRegion(int regionId, double *x, double &dist2);
433  vtkIdType FindClosestPointInRegion(int regionId, double x, double y, double z,
434  double &dist2);
436 
441  void FindPointsWithinRadius(double R, const double x[3], vtkIdList *result);
442 
449  void FindClosestNPoints(int N, const double x[3], vtkIdList *result);
450 
454 
458 
462 
465  void GenerateRepresentation(int *regionList, int len, vtkPolyData *pd);
466 
468 
472  vtkBooleanMacro(GenerateRepresentationUsingDataBounds, int);
473  vtkSetMacro(GenerateRepresentationUsingDataBounds, int);
474  vtkGetMacro(GenerateRepresentationUsingDataBounds, int);
476 
478  virtual void PrintTiming(ostream& os, vtkIndent indent);
479 
482  virtual int NewGeometry();
483 
486  virtual int NewGeometry(vtkDataSet **sets, int numDataSets);
487 
491  virtual void InvalidateGeometry();
492 
497 
502  void FindPointsInArea(double* area, vtkIdTypeArray* ids, bool clearArray = true);
503 
504 protected:
505 
508 
511 
513 
514  int ProcessUserDefinedCuts(double *bounds);
515 
516  void SetCuts(vtkBSPCuts *cuts, int userDefined);
517 
522 
528  int DivideTest(int numberOfPoints, int level);
529 
530 //BTX
531  enum {
532  XDIM = 0, // don't change these values
533  YDIM = 1,
534  ZDIM = 2
535  };
536 //ETX
537 
539 
541  vtkKdNode **RegionList; // indexed by region ID
542 
544 
545  static void DeleteAllDescendants(vtkKdNode *nd);
546 
548  virtual int SelectCutDirection(vtkKdNode *kd);
549  void SetActualLevel(){this->Level = vtkKdTree::ComputeLevel(this->Top);}
550 
554  void GetRegionsAtLevel(int level, vtkKdNode **nodes);
555 
559  static void GetLeafNodeIds(vtkKdNode *node, vtkIntArray *ids);
560 
561 
565 
568  int GetDataSetsNumberOfCells(int set1, int set2);
569 
574  void ComputeCellCenter(vtkDataSet *set, int cellId, float *center);
575  void ComputeCellCenter(vtkDataSet *set, int cellId, double *center);
576 
584  float *ComputeCellCenters(int set);
586 
588 
591  void UpdateProgress(double amount);
592 
594 
595  vtkSetClampMacro(Progress,double,0.0,1.0);
596  vtkGetMacro(Progress,double);
598 
599 protected:
600  // So that each suboperation can report progress
601  // in [0,1], yet we will be able to report a global
602  // progress. Sub-operations must use UpdateSubOperationProgress()
603  // for this to work.
606 
607  // Update progress for a sub-operation. \c amount goes from 0.0 to 1.0.
608  // Actual progress is given by
609  // (this->ProgressOffset + this->ProgressScale* amount).
610  void UpdateSubOperationProgress(double amount);
611 
612  static void _SetNewBounds(vtkKdNode *kd, double *b, int *fixDim);
613  static void CopyChildNodes(vtkKdNode *to, vtkKdNode *from);
614  static void CopyKdNode(vtkKdNode *to, vtkKdNode *from);
616  static void ZeroNumberOfPoints(vtkKdNode *kd);
617 
618 //BTX
619  // Recursive helper for public FindPointsWithinRadius
620  void FindPointsWithinRadius(vtkKdNode* node, double R2,
621  const double x[3], vtkIdList* ids);
622 
623  // Recursive helper for public FindPointsWithinRadius
625 
626  // Recursive helper for public FindPointsInArea
627  void FindPointsInArea(vtkKdNode* node, double* area, vtkIdTypeArray* ids);
628 
629  // Recursive helper for public FindPointsInArea
631 
632  int DivideRegion(vtkKdNode *kd, float *c1, int *ids, int nlevels);
633 
634  void DoMedianFind(vtkKdNode *kd, float *c1, int *ids, int d1, int d2, int d3);
635 
637 
638  struct _cellList{
639  vtkDataSet *dataSet; // cell lists for which data set
640  int *regionIds; // NULL if listing all regions
641  int nRegions;
645  };
646 //ETX
647 
649  vtkIdList *GetList(int regionId, vtkIdList **which);
650 
651  void ComputeCellCenter(vtkCell* cell, double *center, double *weights);
652 
655  vtkCellArray *polys, int level);
656 
659  vtkCellArray *polys, int level);
660 
661  void AddPolys(vtkKdNode *kd, vtkPoints *pts, vtkCellArray *polys);
662 
663  void _printTree(int verbose);
664 
665  int SearchNeighborsForDuplicate(int regionId, float *point,
666  int **pointsSoFar, int *len,
667  float tolerance, float tolerance2);
668 
669  int SearchRegionForDuplicate(float *point, int *pointsSoFar,
670  int len, float tolerance2);
671 
672  int _FindClosestPointInRegion(int regionId,
673  double x, double y, double z, double &dist2);
674 
675  int FindClosestPointInSphere(double x, double y, double z, double radius,
676  int skipRegion, double &dist2);
677 
679  const double dop[3],
680  vtkIntArray *orderedList);
681 
683  vtkIntArray *IdsOfInterest,
684  const double dir[3], int nextId);
685 
687  const double pos[3],
688  vtkIntArray *orderedList);
689 
691  vtkIntArray *IdsOfInterest,
692  const double pos[3], int nextId);
693 
694  static int __ConvexSubRegions(int *ids, int len, vtkKdNode *tree, vtkKdNode **nodes);
695  static int FoundId(vtkIntArray *idArray, int id);
696 
697  void NewParitioningRequest(int req);
698  void SetInputDataInfo(int i,
699  int dims[3], double origin[3], double spacing[3]);
701  int dims[3], double origin[3], double spacing[3]);
703 
704 //BTX
705  static void __printTree(vtkKdNode *kd, int depth, int verbose);
706 //ETX
707 
708  static int MidValue(int dim, float *c1, int nvals, double &coord);
709 
710  static int Select(int dim, float *c1, int *ids, int nvals, double &coord);
711  static float FindMaxLeftHalf(int dim, float *c1, int K);
712  static void _Select(int dim, float *X, int *ids, int L, int R, int K);
713 
714 //BTX
715  static int ComputeLevel(vtkKdNode *kd);
716  static int SelfOrder(int id, vtkKdNode *kd);
717  static int findRegion(vtkKdNode *node, float x, float y, float z);
718  static int findRegion(vtkKdNode *node, double x, double y, double z);
719 //ETX
720 
722  vtkKdNode *kd);
723 
724  static void AddNewRegions(vtkKdNode *kd, float *c1,
725  int midpt, int dim, double coord);
726 
727  void NewPartitioningRequest(int req);
728 
731 
733  double CellBoundsCache[6]; // to optimize IntersectsCell()
734 
736 
737 //BTX
738  struct _cellList CellList;
739 //ETX
740 
741  // Region Ids, by data set by cell id - this list is large (one
742  // int per cell) but accelerates creation of cell lists
743 
745 
746  int MinCells;
747  int NumberOfRegions; // number of leaf nodes
748 
749  int Timing;
750  double FudgeFactor; // a very small distance, relative to the dataset's size
751 
752  // These instance variables are used by the special locator created
753  // to find duplicate points. (BuildLocatorFromPoints)
754 
759 
760  float MaxWidth;
761 
762  // These Last* values are here to save state so we can
763  // determine later if k-d tree must be rebuilt.
764 
768  unsigned long *LastDataSetObserverTags;
771  double *LastBounds;
774 
776  double Progress;
777 
778  vtkKdTree(const vtkKdTree&); // Not implemented
779  void operator=(const vtkKdTree&); // Not implemented
780 };
781 #endif
vtkKdTree::CopyChildNodes
static void CopyChildNodes(vtkKdNode *to, vtkKdNode *from)
vtkPoints
represent and manipulate 3D points
Definition: vtkPoints.h:39
vtkKdTree::GetBounds
void GetBounds(double *bounds)
vtkgl::z
GLdouble GLdouble z
Definition: vtkgl.h:11754
vtkKdTree::CreateCellLists
void CreateCellLists(vtkDataSet *set, int *regionReqList, int reqListSize)
vtkKdTree::TimerLog
vtkTimerLog * TimerLog
Definition: vtkKdTree.h:543
vtkKdNode
This class represents a single spatial region in an 3D axis aligned binary spatial partitioning....
Definition: vtkKdNode.h:45
vtkKdTree::GetList
vtkIdList * GetList(int regionId, vtkIdList **which)
vtkKdTree::OmitYPartitioning
void OmitYPartitioning()
vtkKdTree::GetCellLists
vtkIdType GetCellLists(vtkIntArray *regions, int set, vtkIdList *inRegionCells, vtkIdList *onBoundaryCells)
vtkGetObjectMacro
#define vtkGetObjectMacro(name, type)
Definition: vtkSetGet.h:232
vtkKdTree::AddPolys
void AddPolys(vtkKdNode *kd, vtkPoints *pts, vtkCellArray *polys)
vtkKdTree::GetNumberOfCells
int GetNumberOfCells()
vtkKdTree::RemoveAllDataSets
virtual void RemoveAllDataSets()
vtkgl::weights
const GLbyte * weights
Definition: vtkgl.h:12766
vtkKdTree::PrintTiming
virtual void PrintTiming(ostream &os, vtkIndent indent)
vtkKdTree::OmitZXPartitioning
void OmitZXPartitioning()
vtkgl::b
GLboolean GLboolean GLboolean b
Definition: vtkgl.h:12312
vtkKdTree::OmitXPartitioning
void OmitXPartitioning()
vtkKdTree::_cellList::nRegions
int nRegions
Definition: vtkKdTree.h:641
vtkKdTree::NewPartitioningRequest
void NewPartitioningRequest(int req)
vtkKdTree::FudgeFactor
double FudgeFactor
Definition: vtkKdTree.h:750
vtkKdTree::_generateRepresentationWholeSpace
void _generateRepresentationWholeSpace(vtkKdNode *kd, vtkPoints *pts, vtkCellArray *polys, int level)
vtkKdTree::IncludeRegionBoundaryCells
int IncludeRegionBoundaryCells
Definition: vtkKdTree.h:732
vtkKdTree::LocatorIds
int * LocatorIds
Definition: vtkKdTree.h:757
vtkKdTree::GetDataSetIndex
int GetDataSetIndex(vtkDataSet *set)
vtkKdTree::AddDataSet
virtual void AddDataSet(vtkDataSet *set)
vtkKdTree::_cellList::emptyList
vtkIdList * emptyList
Definition: vtkKdTree.h:644
vtkKdTree::ComputeCellCenter
void ComputeCellCenter(vtkDataSet *set, int cellId, float *center)
vtkKdTree::FreeSearchStructure
void FreeSearchStructure()
vtkKdTree::FindPointsWithinRadius
void FindPointsWithinRadius(double R, const double x[3], vtkIdList *result)
vtkKdTree::GetRegionContainingCell
int GetRegionContainingCell(vtkDataSet *set, vtkIdType cellID)
vtkIdType
int vtkIdType
Definition: vtkType.h:275
vtkCommonDataModelModule.h
vtkKdTree::FindPoint
vtkIdType FindPoint(double *x)
vtkKdTree::vtkKdTree
vtkKdTree(const vtkKdTree &)
vtkKdTree::BuildMapForDuplicatePoints
vtkIdTypeArray * BuildMapForDuplicatePoints(float tolerance)
vtkKdTree::_SetNewBounds
static void _SetNewBounds(vtkKdNode *kd, double *b, int *fixDim)
vtkKdTree::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkKdTree::InvalidateGeometry
virtual void InvalidateGeometry()
vtkKdTree::_cellList::dataSet
vtkDataSet * dataSet
Definition: vtkKdTree.h:639
vtkKdTree::SetActualLevel
void SetActualLevel()
Definition: vtkKdTree.h:549
vtkKdTree::_cellList::cells
vtkIdList ** cells
Definition: vtkKdTree.h:642
vtkKdTree::FindPointsInArea
void FindPointsInArea(vtkKdNode *node, double *area, vtkIdTypeArray *ids)
vtkLocator.h
vtkKdTree::ViewOrderAllRegionsInDirection
int ViewOrderAllRegionsInDirection(const double directionOfProjection[3], vtkIntArray *orderedList)
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkKdTree::FoundId
static int FoundId(vtkIntArray *idArray, int id)
vtkgl::n
GLclampd n
Definition: vtkgl.h:14370
vtkKdTree::ViewOrderAllRegionsFromPosition
int ViewOrderAllRegionsFromPosition(const double directionOfProjection[3], vtkIntArray *orderedList)
vtkKdTree::__printTree
static void __printTree(vtkKdNode *kd, int depth, int verbose)
vtkX3D::dir
@ dir
Definition: vtkX3D.h:324
vtkKdTree::AddNewRegions
static void AddNewRegions(vtkKdNode *kd, float *c1, int midpt, int dim, double coord)
vtkKdTree::FindClosestPointInSphere
int FindClosestPointInSphere(double x, double y, double z, double radius, int skipRegion, double &dist2)
vtkKdTree::LastInputDataInfo
double * LastInputDataInfo
Definition: vtkKdTree.h:770
vtkKdTree::PrintTree
void PrintTree()
vtkgl::x
GLint GLint GLint GLint GLint x
Definition: vtkgl.h:11318
vtkgl::coord
GLuint coord
Definition: vtkgl.h:16713
vtkKdTree::Select
static int Select(int dim, float *c1, int *ids, int nvals, double &coord)
vtkKdTree::LastNumPoints
vtkIdType * LastNumPoints
Definition: vtkKdTree.h:772
vtkX3D::center
@ center
Definition: vtkX3D.h:230
vtkKdTree::SearchNeighborsForDuplicate
int SearchNeighborsForDuplicate(int regionId, float *point, int **pointsSoFar, int *len, float tolerance, float tolerance2)
vtkKdTree::CellRegionList
int * CellRegionList
Definition: vtkKdTree.h:744
vtkKdTree::findRegion
static int findRegion(vtkKdNode *node, float x, float y, float z)
vtkKdTree::GenerateRepresentation
void GenerateRepresentation(int *regionList, int len, vtkPolyData *pd)
vtkKdTree::__ViewOrderRegionsFromPosition
static int __ViewOrderRegionsFromPosition(vtkKdNode *node, vtkIntArray *list, vtkIntArray *IdsOfInterest, const double pos[3], int nextId)
vtkKdTree::GetDataSet
vtkDataSet * GetDataSet(int n)
vtkKdTree::LastBounds
double * LastBounds
Definition: vtkKdTree.h:771
vtkKdTree::FindClosestPoint
vtkIdType FindClosestPoint(double x, double y, double z, double &dist2)
vtkKdTree::RemoveDataSet
virtual void RemoveDataSet(int index)
vtkKdTree::FindPoint
vtkIdType FindPoint(double x, double y, double z)
vtkKdTree::DivideTest
int DivideTest(int numberOfPoints, int level)
vtkKdTree::~vtkKdTree
~vtkKdTree()
vtkKdTree::ProgressOffset
double ProgressOffset
Definition: vtkKdTree.h:605
vtkKdTree::ClearLastBuildCache
void ClearLastBuildCache()
vtkKdTree::_ViewOrderRegionsFromPosition
int _ViewOrderRegionsFromPosition(vtkIntArray *IdsOfInterest, const double pos[3], vtkIntArray *orderedList)
vtkKdTree::GetRegionsAtLevel
void GetRegionsAtLevel(int level, vtkKdNode **nodes)
vtkKdTree::ComputeCellCenter
void ComputeCellCenter(vtkCell *cell, double *center, double *weights)
vtkKdTree::_cellList::regionIds
int * regionIds
Definition: vtkKdTree.h:640
vtkKdTree::New
static vtkKdTree * New()
vtkKdTree::vtkKdTree
vtkKdTree()
vtkKdTree::AllGetRegionContainingCell
int * AllGetRegionContainingCell()
vtkKdTree::_GetRegionsAtLevel
static vtkKdNode ** _GetRegionsAtLevel(int level, vtkKdNode **nodes, vtkKdNode *kd)
vtkKdTree::GetRegionDataBounds
void GetRegionDataBounds(int regionID, double bounds[6])
vtkLocator
abstract base class for objects that accelerate spatial searches
Definition: vtkLocator.h:62
vtkKdTree::FindPointsInArea
void FindPointsInArea(double *area, vtkIdTypeArray *ids, bool clearArray=true)
vtkgl::depth
GLint GLint GLsizei GLsizei GLsizei depth
Definition: vtkgl.h:11316
vtkKdTree::CreateCellLists
void CreateCellLists(int dataSetIndex, int *regionReqList, int reqListSize)
vtkSetClampMacro
#define vtkSetClampMacro(name, type, min, max)
Definition: vtkSetGet.h:143
vtkKdTree::GetCellLists
vtkIdType GetCellLists(vtkIntArray *regions, vtkDataSet *set, vtkIdList *inRegionCells, vtkIdList *onBoundaryCells)
vtkX3D::point
@ point
Definition: vtkX3D.h:236
vtkBSPIntersections
Perform calculations (mostly intersection calculations) on regions of a 3D binary spatial partitionin...
Definition: vtkBSPIntersections.h:45
vtkKdTree::SelectCutDirection
virtual int SelectCutDirection(vtkKdNode *kd)
vtkKdTree::ComputeCellCenters
float * ComputeCellCenters()
vtkKdTree::FindMaxLeftHalf
static float FindMaxLeftHalf(int dim, float *c1, int K)
vtkKdTree::NumberOfRegionsOrMore
int NumberOfRegionsOrMore
Definition: vtkKdTree.h:730
vtkKdTree::Top
vtkKdNode * Top
Definition: vtkKdTree.h:540
vtkKdTree::SetInputDataInfo
void SetInputDataInfo(int i, int dims[3], double origin[3], double spacing[3])
vtkKdTree::BuildLocatorFromPoints
void BuildLocatorFromPoints(vtkPoints **ptArray, int numPtArrays)
vtkKdTree::FindClosestPointWithinRadius
vtkIdType FindClosestPointWithinRadius(double radius, const double x[3], double &dist2)
vtkKdTree::CreateCellLists
void CreateCellLists(int *regionReqList, int listSize)
vtkKdTree::InitializeCellLists
void InitializeCellLists()
vtkKdTree::ProcessUserDefinedCuts
int ProcessUserDefinedCuts(double *bounds)
vtkKdTree::GetRegionContainingCell
int GetRegionContainingCell(int set, vtkIdType cellID)
vtkgl::ids
GLuint * ids
Definition: vtkgl.h:11831
vtkKdTree::GetCellList
vtkIdList * GetCellList(int regionID)
vtkKdTree::LocatorPoints
float * LocatorPoints
Definition: vtkKdTree.h:756
vtkKdTree::_FindClosestPointInRegion
int _FindClosestPointInRegion(int regionId, double x, double y, double z, double &dist2)
vtkKdTree::_cellList::boundaryCells
vtkIdList ** boundaryCells
Definition: vtkKdTree.h:643
vtkKdTree::DoMedianFind
void DoMedianFind(vtkKdNode *kd, float *c1, int *ids, int d1, int d2, int d3)
vtkKdTree::NewParitioningRequest
void NewParitioningRequest(int req)
vtkKdTree::BSPCalculator
vtkBSPIntersections * BSPCalculator
Definition: vtkKdTree.h:509
vtkCell
abstract class to specify cell behavior
Definition: vtkCell.h:62
vtkKdTree::SelfOrder
static int SelfOrder(int id, vtkKdNode *kd)
vtkKdTree::CopyTree
static vtkKdNode * CopyTree(vtkKdNode *kd)
vtkKdTree::BuildLocator
void BuildLocator()
vtkKdTree::ValidDirections
int ValidDirections
Definition: vtkKdTree.h:538
vtkKdTree::GenerateRepresentation
void GenerateRepresentation(int level, vtkPolyData *pd)
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkKdTree::ComputeLevel
static int ComputeLevel(vtkKdNode *kd)
vtkCellArray
object to represent cell connectivity
Definition: vtkCellArray.h:50
vtkKdTree::SelfRegister
void SelfRegister(vtkKdNode *kd)
vtkIntArray
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:53
vtkKdTree::operator=
void operator=(const vtkKdTree &)
vtkKdTree::LastDataSetObserverTags
unsigned long * LastDataSetObserverTags
Definition: vtkKdTree.h:768
vtkKdTree::SetDataBoundsToSpatialBounds
static void SetDataBoundsToSpatialBounds(vtkKdNode *kd)
vtkKdTree::DivideRegion
int DivideRegion(vtkKdNode *kd, float *c1, int *ids, int nlevels)
vtkKdTree::UpdateProgress
void UpdateProgress(double amount)
vtkKdTree::MinCells
int MinCells
Definition: vtkKdTree.h:746
vtkKdTree::NumberOfRegions
int NumberOfRegions
Definition: vtkKdTree.h:747
vtkBSPCuts
This class represents an axis-aligned Binary Spatial Partitioning of a 3D space.
Definition: vtkBSPCuts.h:44
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:36
vtkKdTree::UpdateBuildTime
void UpdateBuildTime()
vtkKdTree::BuildLocatorFromPoints
void BuildLocatorFromPoints(vtkPoints *ptArray)
vtkKdTree::Progress
double Progress
Definition: vtkKdTree.h:776
vtkKdTree::_cellList
Definition: vtkKdTree.h:638
vtkKdTree::OmitXYPartitioning
void OmitXYPartitioning()
vtkKdTree::SearchRegionForDuplicate
int SearchRegionForDuplicate(float *point, int *pointsSoFar, int len, float tolerance2)
vtkKdTree::GenerateRepresentationDataBounds
void GenerateRepresentationDataBounds(int level, vtkPolyData *pd)
vtkKdTree::BuildLocatorFromPoints
void BuildLocatorFromPoints(vtkPointSet *pointset)
vtkKdTree::FindClosestNPoints
void FindClosestNPoints(int N, const double x[3], vtkIdList *result)
vtkKdTree::LastInputDataSets
vtkDataSet ** LastInputDataSets
Definition: vtkKdTree.h:767
vtkKdTree::GenerateRepresentationUsingDataBounds
int GenerateRepresentationUsingDataBounds
Definition: vtkKdTree.h:735
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkKdTree::OmitZPartitioning
void OmitZPartitioning()
vtkKdTree::CopyKdNode
static void CopyKdNode(vtkKdNode *to, vtkKdNode *from)
vtkKdTree::LocatorRegionLocation
int * LocatorRegionLocation
Definition: vtkKdTree.h:758
vtkKdTree::LastNumDataSets
int LastNumDataSets
Definition: vtkKdTree.h:765
vtkKdTree::GetBoundaryCellList
vtkIdList * GetBoundaryCellList(int regionID)
vtkgl::level
GLint level
Definition: vtkgl.h:11316
vtkKdTree::OmitNoPartitioning
void OmitNoPartitioning()
vtkKdTree::RemoveDataSet
virtual void RemoveDataSet(vtkDataSet *set)
vtkKdTree::ProgressScale
double ProgressScale
Definition: vtkKdTree.h:596
vtkKdTree::GetCellLists
vtkIdType GetCellLists(vtkIntArray *regions, vtkIdList *inRegionCells, vtkIdList *onBoundaryCells)
vtkKdTree::DataSets
vtkDataSetCollection * DataSets
Definition: vtkKdTree.h:587
vtkKdTree::SetCuts
void SetCuts(vtkBSPCuts *cuts)
vtkX3D::spacing
@ spacing
Definition: vtkX3D.h:481
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
vtkKdTree::MaxWidth
float MaxWidth
Definition: vtkKdTree.h:760
vtkKdTree::NewGeometry
virtual int NewGeometry(vtkDataSet **sets, int numDataSets)
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
vtkKdTree::GetDataSet
vtkDataSet * GetDataSet()
Definition: vtkKdTree.h:191
vtkKdTree::LastDataSetType
int * LastDataSetType
Definition: vtkKdTree.h:769
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkKdTree::UpdateSubOperationProgress
void UpdateSubOperationProgress(double amount)
vtkgl::index
GLuint index
Definition: vtkgl.h:11983
vtkTimerLog
Timer support and logging.
Definition: vtkTimerLog.h:82
vtkKdTree::PrintRegion
void PrintRegion(int id)
vtkIdTypeArray
dynamic, self-adjusting array of vtkIdType
Definition: vtkIdTypeArray.h:49
vtkgl::y
GLint GLint GLint GLint GLint GLint y
Definition: vtkgl.h:11318
vtkgl::result
GLuint64EXT * result
Definition: vtkgl.h:18868
vtkKdTree::LastNumCells
vtkIdType * LastNumCells
Definition: vtkKdTree.h:773
vtkKdTree::GetDataSetsNumberOfCells
int GetDataSetsNumberOfCells(int set1, int set2)
vtkKdTree::FindPointsWithinRadius
void FindPointsWithinRadius(vtkKdNode *node, double R2, const double x[3], vtkIdList *ids)
vtkKdTree::SetCuts
void SetCuts(vtkBSPCuts *cuts, int userDefined)
vtkKdTree::_generateRepresentationDataBounds
void _generateRepresentationDataBounds(vtkKdNode *kd, vtkPoints *pts, vtkCellArray *polys, int level)
vtkPointSet
abstract class for specifying dataset behavior
Definition: vtkPointSet.h:45
vtkKdTree::NumberOfLocatorPoints
int NumberOfLocatorPoints
Definition: vtkKdTree.h:755
vtkKdTree::BuildRegionList
void BuildRegionList()
vtkKdTree::SetNewBounds
void SetNewBounds(double *bounds)
vtkKdTree::FindClosestPointInRegion
vtkIdType FindClosestPointInRegion(int regionId, double *x, double &dist2)
vtkKdTree::MinimalNumberOfConvexSubRegions
int MinimalNumberOfConvexSubRegions(vtkIntArray *regionIdList, double **convexRegionBounds)
vtkKdTree::AddAllPointsInRegion
void AddAllPointsInRegion(vtkKdNode *node, vtkIdList *ids)
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:84
vtkKdTree::_Select
static void _Select(int dim, float *X, int *ids, int L, int R, int K)
vtkKdTree::AddAllPointsInRegion
void AddAllPointsInRegion(vtkKdNode *node, vtkIdTypeArray *ids)
vtkKdTree::PrintVerboseTree
void PrintVerboseTree()
vtkKdTree::GetRegionBounds
void GetRegionBounds(int regionID, double bounds[6])
vtkKdTree::ComputeCellCenter
void ComputeCellCenter(vtkDataSet *set, int cellId, double *center)
vtkKdTree
a Kd-tree spatial decomposition of a set of points
Definition: vtkKdTree.h:81
vtkKdTree::NumberOfRegionsOrLess
int NumberOfRegionsOrLess
Definition: vtkKdTree.h:729
vtkKdTree::GetRegionContainingPoint
int GetRegionContainingPoint(double x, double y, double z)
vtkDataSetCollection
maintain an unordered list of dataset objects
Definition: vtkDataSetCollection.h:31
vtkKdTree::_ViewOrderRegionsInDirection
int _ViewOrderRegionsInDirection(vtkIntArray *IdsOfInterest, const double dop[3], vtkIntArray *orderedList)
vtkKdTree::__ViewOrderRegionsInDirection
static int __ViewOrderRegionsInDirection(vtkKdNode *node, vtkIntArray *list, vtkIntArray *IdsOfInterest, const double dir[3], int nextId)
vtkKdTree::__ConvexSubRegions
static int __ConvexSubRegions(int *ids, int len, vtkKdNode *tree, vtkKdNode **nodes)
vtkKdTree::Cuts
vtkBSPCuts * Cuts
Definition: vtkKdTree.h:775
vtkgl::len
GLenum GLsizei len
Definition: vtkgl.h:13010
vtkKdTree::ComputeCellCenters
float * ComputeCellCenters(int set)
VTKCOMMONDATAMODEL_EXPORT
#define VTKCOMMONDATAMODEL_EXPORT
Definition: vtkCommonDataModelModule.h:15
vtkKdTree::FindClosestPointInRegion
vtkIdType FindClosestPointInRegion(int regionId, double x, double y, double z, double &dist2)
vtkKdTree::DeleteCellLists
void DeleteCellLists()
vtkKdTree::findRegion
static int findRegion(vtkKdNode *node, double x, double y, double z)
vtkKdTree::GetRegionContainingCell
int GetRegionContainingCell(vtkIdType cellID)
vtkKdTree::LastDataCacheSize
int LastDataCacheSize
Definition: vtkKdTree.h:766
vtkKdTree::RegionList
vtkKdNode ** RegionList
Definition: vtkKdTree.h:541
vtkKdTree::ViewOrderRegionsFromPosition
int ViewOrderRegionsFromPosition(vtkIntArray *regionIds, const double directionOfProjection[3], vtkIntArray *orderedList)
vtkKdTree::NewGeometry
virtual int NewGeometry()
vtkX3D::radius
@ radius
Definition: vtkX3D.h:252
vtkKdTree::OmitYZPartitioning
void OmitYZPartitioning()
vtkKdTree::SetDataSet
virtual void SetDataSet(vtkDataSet *set)
vtkKdTree::CheckInputDataInfo
int CheckInputDataInfo(int i, int dims[3], double origin[3], double spacing[3])
vtkKdTree::SetCalculator
void SetCalculator(vtkKdNode *kd)
vtkKdTree::GetPointsInRegion
vtkIdTypeArray * GetPointsInRegion(int regionId)
vtkKdTree::_printTree
void _printTree(int verbose)
vtkKdTree::GetNumberOfDataSets
int GetNumberOfDataSets()
vtkKdTree::Timing
int Timing
Definition: vtkKdTree.h:749
vtkKdTree::FindClosestPoint
vtkIdType FindClosestPoint(double *x, double &dist2)
vtkKdTree::CreateCellLists
void CreateCellLists()
vtkKdTree::ViewOrderRegionsInDirection
int ViewOrderRegionsInDirection(vtkIntArray *regionIds, const double directionOfProjection[3], vtkIntArray *orderedList)
vtkKdTree::ZeroNumberOfPoints
static void ZeroNumberOfPoints(vtkKdNode *kd)
vtkKdTree::ComputeCellCenters
float * ComputeCellCenters(vtkDataSet *set)
vtkKdTree::GenerateRepresentationWholeSpace
void GenerateRepresentationWholeSpace(int level, vtkPolyData *pd)
vtkKdTree::UserDefinedCuts
int UserDefinedCuts
Definition: vtkKdTree.h:510
vtkKdTree::GetLeafNodeIds
static void GetLeafNodeIds(vtkKdNode *node, vtkIntArray *ids)
vtkKdTree::MidValue
static int MidValue(int dim, float *c1, int nvals, double &coord)
vtkKdTree::DeleteAllDescendants
static void DeleteAllDescendants(vtkKdNode *nd)