90 vtkBooleanMacro(Timing,
int);
91 vtkSetMacro(Timing,
int);
92 vtkGetMacro(Timing,
int);
97 vtkSetMacro(MinCells,
int);
98 vtkGetMacro(MinCells,
int);
106 vtkGetMacro(NumberOfRegionsOrLess,
int);
107 vtkSetMacro(NumberOfRegionsOrLess,
int);
113 vtkGetMacro(NumberOfRegionsOrMore,
int);
114 vtkSetMacro(NumberOfRegionsOrMore,
int);
121 vtkGetMacro(FudgeFactor,
double);
122 vtkSetMacro(FudgeFactor,
double);
136 void OmitXPartitioning();
139 void OmitYPartitioning();
142 void OmitZPartitioning();
145 void OmitXYPartitioning();
148 void OmitYZPartitioning();
151 void OmitZXPartitioning();
154 void OmitNoPartitioning();
174 virtual void RemoveDataSet(
int index);
176 virtual void RemoveAllDataSets();
180 int GetNumberOfDataSets();
204 void GetBounds(
double *bounds);
212 void SetNewBounds(
double *bounds);
216 vtkGetMacro(NumberOfRegions,
int);
220 void GetRegionBounds(
int regionID,
double bounds[6]);
223 void GetRegionDataBounds(
int regionID,
double bounds[6]);
228 void PrintVerboseTree();
232 void PrintRegion(
int id);
242 void CreateCellLists(
int dataSetIndex,
int *regionReqList,
244 void CreateCellLists(
vtkDataSet *set,
int *regionReqList,
246 void CreateCellLists(
int *regionReqList,
int listSize);
247 void CreateCellLists();
254 vtkSetMacro(IncludeRegionBoundaryCells,
int);
255 vtkGetMacro(IncludeRegionBoundaryCells,
int);
256 vtkBooleanMacro(IncludeRegionBoundaryCells,
int);
260 void DeleteCellLists();
273 vtkIdList *GetBoundaryCellList(
int regionID);
303 int GetRegionContainingCell(
int set,
vtkIdType cellID);
304 int GetRegionContainingCell(
vtkIdType cellID);
311 int *AllGetRegionContainingCell();
314 int GetRegionContainingPoint(
double x,
double y,
double z);
332 int MinimalNumberOfConvexSubRegions(
vtkIntArray *regionIdList,
333 double **convexRegionBounds);
342 int ViewOrderAllRegionsInDirection(
const double directionOfProjection[3],
352 int ViewOrderRegionsInDirection(
vtkIntArray *regionIds,
353 const double directionOfProjection[3],
364 int ViewOrderAllRegionsFromPosition(
const double directionOfProjection[3],
374 int ViewOrderRegionsFromPosition(
vtkIntArray *regionIds,
375 const double directionOfProjection[3],
388 void BuildLocatorFromPoints(
vtkPointSet *pointset);
389 void BuildLocatorFromPoints(
vtkPoints *ptArray);
390 void BuildLocatorFromPoints(
vtkPoints **ptArray,
int numPtArrays);
409 vtkIdType FindPoint(
double x,
double y,
double z);
416 vtkIdType FindClosestPoint(
double *x,
double &dist2);
417 vtkIdType FindClosestPoint(
double x,
double y,
double z,
double &dist2);
425 double radius,
const double x[3],
double& dist2);
432 vtkIdType FindClosestPointInRegion(
int regionId,
double *x,
double &dist2);
433 vtkIdType FindClosestPointInRegion(
int regionId,
double x,
double y,
double z,
441 void FindPointsWithinRadius(
double R,
const double x[3],
vtkIdList *result);
449 void FindClosestNPoints(
int N,
const double x[3],
vtkIdList *result);
472 vtkBooleanMacro(GenerateRepresentationUsingDataBounds,
int);
473 vtkSetMacro(GenerateRepresentationUsingDataBounds,
int);
474 vtkGetMacro(GenerateRepresentationUsingDataBounds,
int);
478 virtual void PrintTiming(ostream& os,
vtkIndent indent);
482 virtual int NewGeometry();
486 virtual int NewGeometry(
vtkDataSet **sets,
int numDataSets);
491 virtual void InvalidateGeometry();
502 void FindPointsInArea(
double* area,
vtkIdTypeArray* ids,
bool clearArray =
true);
514 int ProcessUserDefinedCuts(
double *bounds);
516 void SetCuts(
vtkBSPCuts *cuts,
int userDefined);
521 void UpdateBuildTime();
528 int DivideTest(
int numberOfPoints,
int level);
545 static void DeleteAllDescendants(
vtkKdNode *nd);
547 void BuildRegionList();
548 virtual int SelectCutDirection(
vtkKdNode *kd);
564 int GetNumberOfCells();
568 int GetDataSetsNumberOfCells(
int set1,
int set2);
583 float *ComputeCellCenters();
584 float *ComputeCellCenters(
int set);
591 void UpdateProgress(
double amount);
595 vtkSetClampMacro(Progress,
double,0.0,1.0);
596 vtkGetMacro(Progress,
double);
610 void UpdateSubOperationProgress(
double amount);
612 static void _SetNewBounds(
vtkKdNode *kd,
double *b,
int *fixDim);
615 static void SetDataBoundsToSpatialBounds(
vtkKdNode *kd);
616 static void ZeroNumberOfPoints(
vtkKdNode *kd);
620 void FindPointsWithinRadius(
vtkKdNode* node,
double R2,
632 int DivideRegion(
vtkKdNode *kd,
float *c1,
int *ids,
int nlevels);
634 void DoMedianFind(
vtkKdNode *kd,
float *c1,
int *ids,
int d1,
int d2,
int d3);
648 void InitializeCellLists();
651 void ComputeCellCenter(
vtkCell* cell,
double *
center,
double *weights);
663 void _printTree(
int verbose);
665 int SearchNeighborsForDuplicate(
int regionId,
float *
point,
666 int **pointsSoFar,
int *len,
667 float tolerance,
float tolerance2);
669 int SearchRegionForDuplicate(
float *
point,
int *pointsSoFar,
670 int len,
float tolerance2);
672 int _FindClosestPointInRegion(
int regionId,
673 double x,
double y,
double z,
double &dist2);
675 int FindClosestPointInSphere(
double x,
double y,
double z,
double radius,
676 int skipRegion,
double &dist2);
678 int _ViewOrderRegionsInDirection(
vtkIntArray *IdsOfInterest,
684 const double dir[3],
int nextId);
686 int _ViewOrderRegionsFromPosition(
vtkIntArray *IdsOfInterest,
692 const double pos[3],
int nextId);
697 void NewParitioningRequest(
int req);
698 void SetInputDataInfo(
int i,
699 int dims[3],
double origin[3],
double spacing[3]);
700 int CheckInputDataInfo(
int i,
701 int dims[3],
double origin[3],
double spacing[3]);
702 void ClearLastBuildCache();
705 static void __printTree(
vtkKdNode *kd,
int depth,
int verbose);
708 static int MidValue(
int dim,
float *c1,
int nvals,
double &coord);
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);
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);
724 static void AddNewRegions(
vtkKdNode *kd,
float *c1,
725 int midpt,
int dim,
double coord);
727 void NewPartitioningRequest(
int req);
733 double CellBoundsCache[6];
virtual void BuildLocator()=0
vtkDataSet ** LastInputDataSets
maintain an unordered list of dataset objects
This class represents a single spatial region in an 3D axis aligned binary spatial partitioning...
Perform calculations (mostly intersection calculations) on regions of a 3D binary spatial partitionin...
This class represents an axis-aligned Binary Spatial Partitioning of a 3D space.
abstract class to specify dataset behavior
int NumberOfLocatorPoints
static int ComputeLevel(vtkKdNode *kd)
abstract base class for objects that accelerate spatial searches
int NumberOfRegionsOrLess
void PrintSelf(ostream &os, vtkIndent indent)
abstract class for specifying dataset behavior
dynamic, self-adjusting array of vtkIdType
concrete dataset represents vertices, lines, polygons, and triangle strips
virtual void FreeSearchStructure()=0
double * LastInputDataInfo
Timer support and logging.
virtual void SetDataSet(vtkDataSet *)
abstract class to specify cell behavior
unsigned long * LastDataSetObserverTags
dynamic, self-adjusting array of int
virtual vtkDataSet * GetDataSet()
a simple class to control print indentation
list of point or cell ids
vtkIdType * LastNumPoints
object to represent cell connectivity
vtkIdList ** boundaryCells
a Kd-tree spatial decomposition of a set of points
vtkDataSet * GetDataSet()
int IncludeRegionBoundaryCells
int * LocatorRegionLocation
int GenerateRepresentationUsingDataBounds
vtkDataSetCollection * DataSets
virtual void GenerateRepresentation(int level, vtkPolyData *pd)=0
#define VTKCOMMONDATAMODEL_EXPORT
vtkBSPIntersections * BSPCalculator
represent and manipulate 3D points
int NumberOfRegionsOrMore