Go to the documentation of this file.
333 double **convexRegionBounds);
353 const double directionOfProjection[3],
375 const double directionOfProjection[3],
425 double radius,
const double x[3],
double& dist2);
666 int **pointsSoFar,
int *
len,
667 float tolerance,
float tolerance2);
670 int len,
float tolerance2);
673 double x,
double y,
double z,
double &dist2);
676 int skipRegion,
double &dist2);
684 const double dir[3],
int nextId);
692 const double pos[3],
int nextId);
699 int dims[3],
double origin[3],
double spacing[3]);
701 int dims[3],
double origin[3],
double spacing[3]);
712 static void _Select(
int dim,
float *X,
int *
ids,
int L,
int R,
int K);
725 int midpt,
int dim,
double coord);
733 double CellBoundsCache[6];
static void CopyChildNodes(vtkKdNode *to, vtkKdNode *from)
represent and manipulate 3D points
void GetBounds(double *bounds)
void CreateCellLists(vtkDataSet *set, int *regionReqList, int reqListSize)
This class represents a single spatial region in an 3D axis aligned binary spatial partitioning....
vtkIdList * GetList(int regionId, vtkIdList **which)
vtkIdType GetCellLists(vtkIntArray *regions, int set, vtkIdList *inRegionCells, vtkIdList *onBoundaryCells)
#define vtkGetObjectMacro(name, type)
void AddPolys(vtkKdNode *kd, vtkPoints *pts, vtkCellArray *polys)
virtual void RemoveAllDataSets()
virtual void PrintTiming(ostream &os, vtkIndent indent)
void OmitZXPartitioning()
GLboolean GLboolean GLboolean b
void NewPartitioningRequest(int req)
void _generateRepresentationWholeSpace(vtkKdNode *kd, vtkPoints *pts, vtkCellArray *polys, int level)
int IncludeRegionBoundaryCells
int GetDataSetIndex(vtkDataSet *set)
virtual void AddDataSet(vtkDataSet *set)
void ComputeCellCenter(vtkDataSet *set, int cellId, float *center)
void FreeSearchStructure()
void FindPointsWithinRadius(double R, const double x[3], vtkIdList *result)
int GetRegionContainingCell(vtkDataSet *set, vtkIdType cellID)
vtkIdType FindPoint(double *x)
vtkKdTree(const vtkKdTree &)
vtkIdTypeArray * BuildMapForDuplicatePoints(float tolerance)
static void _SetNewBounds(vtkKdNode *kd, double *b, int *fixDim)
void PrintSelf(ostream &os, vtkIndent indent)
virtual void InvalidateGeometry()
void FindPointsInArea(vtkKdNode *node, double *area, vtkIdTypeArray *ids)
int ViewOrderAllRegionsInDirection(const double directionOfProjection[3], vtkIntArray *orderedList)
#define vtkTypeMacro(thisClass, superclass)
static int FoundId(vtkIntArray *idArray, int id)
int ViewOrderAllRegionsFromPosition(const double directionOfProjection[3], vtkIntArray *orderedList)
static void __printTree(vtkKdNode *kd, int depth, int verbose)
static void AddNewRegions(vtkKdNode *kd, float *c1, int midpt, int dim, double coord)
int FindClosestPointInSphere(double x, double y, double z, double radius, int skipRegion, double &dist2)
double * LastInputDataInfo
GLint GLint GLint GLint GLint x
static int Select(int dim, float *c1, int *ids, int nvals, double &coord)
vtkIdType * LastNumPoints
int SearchNeighborsForDuplicate(int regionId, float *point, int **pointsSoFar, int *len, float tolerance, float tolerance2)
static int findRegion(vtkKdNode *node, float x, float y, float z)
void GenerateRepresentation(int *regionList, int len, vtkPolyData *pd)
static int __ViewOrderRegionsFromPosition(vtkKdNode *node, vtkIntArray *list, vtkIntArray *IdsOfInterest, const double pos[3], int nextId)
vtkDataSet * GetDataSet(int n)
vtkIdType FindClosestPoint(double x, double y, double z, double &dist2)
virtual void RemoveDataSet(int index)
vtkIdType FindPoint(double x, double y, double z)
int DivideTest(int numberOfPoints, int level)
void ClearLastBuildCache()
int _ViewOrderRegionsFromPosition(vtkIntArray *IdsOfInterest, const double pos[3], vtkIntArray *orderedList)
void GetRegionsAtLevel(int level, vtkKdNode **nodes)
void ComputeCellCenter(vtkCell *cell, double *center, double *weights)
int * AllGetRegionContainingCell()
static vtkKdNode ** _GetRegionsAtLevel(int level, vtkKdNode **nodes, vtkKdNode *kd)
void GetRegionDataBounds(int regionID, double bounds[6])
abstract base class for objects that accelerate spatial searches
void FindPointsInArea(double *area, vtkIdTypeArray *ids, bool clearArray=true)
GLint GLint GLsizei GLsizei GLsizei depth
void CreateCellLists(int dataSetIndex, int *regionReqList, int reqListSize)
#define vtkSetClampMacro(name, type, min, max)
vtkIdType GetCellLists(vtkIntArray *regions, vtkDataSet *set, vtkIdList *inRegionCells, vtkIdList *onBoundaryCells)
Perform calculations (mostly intersection calculations) on regions of a 3D binary spatial partitionin...
virtual int SelectCutDirection(vtkKdNode *kd)
float * ComputeCellCenters()
static float FindMaxLeftHalf(int dim, float *c1, int K)
int NumberOfRegionsOrMore
void SetInputDataInfo(int i, int dims[3], double origin[3], double spacing[3])
void BuildLocatorFromPoints(vtkPoints **ptArray, int numPtArrays)
vtkIdType FindClosestPointWithinRadius(double radius, const double x[3], double &dist2)
void CreateCellLists(int *regionReqList, int listSize)
void InitializeCellLists()
int ProcessUserDefinedCuts(double *bounds)
int GetRegionContainingCell(int set, vtkIdType cellID)
vtkIdList * GetCellList(int regionID)
int _FindClosestPointInRegion(int regionId, double x, double y, double z, double &dist2)
vtkIdList ** boundaryCells
void DoMedianFind(vtkKdNode *kd, float *c1, int *ids, int d1, int d2, int d3)
void NewParitioningRequest(int req)
vtkBSPIntersections * BSPCalculator
abstract class to specify cell behavior
static int SelfOrder(int id, vtkKdNode *kd)
static vtkKdNode * CopyTree(vtkKdNode *kd)
void GenerateRepresentation(int level, vtkPolyData *pd)
a simple class to control print indentation
static int ComputeLevel(vtkKdNode *kd)
object to represent cell connectivity
void SelfRegister(vtkKdNode *kd)
dynamic, self-adjusting array of int
void operator=(const vtkKdTree &)
unsigned long * LastDataSetObserverTags
static void SetDataBoundsToSpatialBounds(vtkKdNode *kd)
int DivideRegion(vtkKdNode *kd, float *c1, int *ids, int nlevels)
void UpdateProgress(double amount)
This class represents an axis-aligned Binary Spatial Partitioning of a 3D space.
list of point or cell ids
void BuildLocatorFromPoints(vtkPoints *ptArray)
void OmitXYPartitioning()
int SearchRegionForDuplicate(float *point, int *pointsSoFar, int len, float tolerance2)
void GenerateRepresentationDataBounds(int level, vtkPolyData *pd)
void BuildLocatorFromPoints(vtkPointSet *pointset)
void FindClosestNPoints(int N, const double x[3], vtkIdList *result)
vtkDataSet ** LastInputDataSets
int GenerateRepresentationUsingDataBounds
#define vtkGetMacro(name, type)
static void CopyKdNode(vtkKdNode *to, vtkKdNode *from)
int * LocatorRegionLocation
vtkIdList * GetBoundaryCellList(int regionID)
void OmitNoPartitioning()
virtual void RemoveDataSet(vtkDataSet *set)
vtkIdType GetCellLists(vtkIntArray *regions, vtkIdList *inRegionCells, vtkIdList *onBoundaryCells)
vtkDataSetCollection * DataSets
void SetCuts(vtkBSPCuts *cuts)
abstract class to specify dataset behavior
virtual int NewGeometry(vtkDataSet **sets, int numDataSets)
vtkBooleanMacro(IgnoreDriverBugs, bool)
vtkDataSet * GetDataSet()
vtkSetMacro(IgnoreDriverBugs, bool)
void UpdateSubOperationProgress(double amount)
Timer support and logging.
dynamic, self-adjusting array of vtkIdType
GLint GLint GLint GLint GLint GLint y
int GetDataSetsNumberOfCells(int set1, int set2)
void FindPointsWithinRadius(vtkKdNode *node, double R2, const double x[3], vtkIdList *ids)
void SetCuts(vtkBSPCuts *cuts, int userDefined)
void _generateRepresentationDataBounds(vtkKdNode *kd, vtkPoints *pts, vtkCellArray *polys, int level)
abstract class for specifying dataset behavior
int NumberOfLocatorPoints
void SetNewBounds(double *bounds)
vtkIdType FindClosestPointInRegion(int regionId, double *x, double &dist2)
int MinimalNumberOfConvexSubRegions(vtkIntArray *regionIdList, double **convexRegionBounds)
void AddAllPointsInRegion(vtkKdNode *node, vtkIdList *ids)
concrete dataset represents vertices, lines, polygons, and triangle strips
static void _Select(int dim, float *X, int *ids, int L, int R, int K)
void AddAllPointsInRegion(vtkKdNode *node, vtkIdTypeArray *ids)
void GetRegionBounds(int regionID, double bounds[6])
void ComputeCellCenter(vtkDataSet *set, int cellId, double *center)
a Kd-tree spatial decomposition of a set of points
int NumberOfRegionsOrLess
int GetRegionContainingPoint(double x, double y, double z)
maintain an unordered list of dataset objects
int _ViewOrderRegionsInDirection(vtkIntArray *IdsOfInterest, const double dop[3], vtkIntArray *orderedList)
static int __ViewOrderRegionsInDirection(vtkKdNode *node, vtkIntArray *list, vtkIntArray *IdsOfInterest, const double dir[3], int nextId)
static int __ConvexSubRegions(int *ids, int len, vtkKdNode *tree, vtkKdNode **nodes)
float * ComputeCellCenters(int set)
#define VTKCOMMONDATAMODEL_EXPORT
vtkIdType FindClosestPointInRegion(int regionId, double x, double y, double z, double &dist2)
static int findRegion(vtkKdNode *node, double x, double y, double z)
int GetRegionContainingCell(vtkIdType cellID)
int ViewOrderRegionsFromPosition(vtkIntArray *regionIds, const double directionOfProjection[3], vtkIntArray *orderedList)
virtual int NewGeometry()
void OmitYZPartitioning()
virtual void SetDataSet(vtkDataSet *set)
int CheckInputDataInfo(int i, int dims[3], double origin[3], double spacing[3])
void SetCalculator(vtkKdNode *kd)
vtkIdTypeArray * GetPointsInRegion(int regionId)
void _printTree(int verbose)
int GetNumberOfDataSets()
vtkIdType FindClosestPoint(double *x, double &dist2)
int ViewOrderRegionsInDirection(vtkIntArray *regionIds, const double directionOfProjection[3], vtkIntArray *orderedList)
static void ZeroNumberOfPoints(vtkKdNode *kd)
float * ComputeCellCenters(vtkDataSet *set)
void GenerateRepresentationWholeSpace(int level, vtkPolyData *pd)
static void GetLeafNodeIds(vtkKdNode *node, vtkIntArray *ids)
static int MidValue(int dim, float *c1, int nvals, double &coord)
static void DeleteAllDescendants(vtkKdNode *nd)