You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
4.4 KiB
117 lines
4.4 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkSpatialRepresentationFilter.h,v $
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkSpatialRepresentationFilter - generate polygonal model of spatial search object (i.e., a vtkLocator)
|
|
// .SECTION Description
|
|
// vtkSpatialRepresentationFilter generates an polygonal representation of a
|
|
// spatial search (vtkLocator) object. The representation varies depending
|
|
// upon the nature of the spatial search object. For example, the
|
|
// representation for vtkOBBTree is a collection of oriented bounding
|
|
// boxes. Ths input to this filter is a dataset of any type, and the output
|
|
// is polygonal data. You must also specify the spatial search object to
|
|
// use.
|
|
//
|
|
// Generally spatial search objects are used for collision detection and
|
|
// other geometric operations, but in this filter one or more levels of
|
|
// spatial searchers can be generated to form a geometric approximation to
|
|
// the input data. This is a form of data simplification, generally used to
|
|
// accelerate the rendering process. Or, this filter can be used as a
|
|
// debugging/ visualization aid for spatial search objects.
|
|
//
|
|
// This filter can generate one or more output vtkPolyData corresponding to
|
|
// different levels in the spatial search tree. The output data is retrieved
|
|
// using the GetOutput(id) method, where id ranges from 0 (root level)
|
|
// to Level. Note that the output for level "id" is not computed unless a
|
|
// GetOutput(id) method is issued. Thus, if you desire three levels of output
|
|
// (say 2,4,7), you would have to invoke GetOutput(2), GetOutput(4), and
|
|
// GetOutput(7). (Also note that the Level ivar is computed automatically
|
|
// depending on the size and nature of the input data.) There is also
|
|
// another GetOutput() method that takes no parameters. This method returns
|
|
// the leafs of the spatial search tree, which may be at different levels.
|
|
|
|
// .SECTION Caveats
|
|
// You can specify the number of levels of to generate with the MaxLevels
|
|
// ivar. However, when the spatial search tree is built, this number of levels
|
|
// may not actually be generated. The actual number available can be found in
|
|
// the Levels ivar. Note that the value of Levels may change after filter
|
|
// execution.
|
|
|
|
// .SECTION See Also
|
|
// vtkLocator vtkPointLocator vtkCellLocator vtkOBBTree
|
|
|
|
#ifndef __vtkSpatialRepresentationFilter_h
|
|
#define __vtkSpatialRepresentationFilter_h
|
|
|
|
#include "vtkPolyDataSource.h"
|
|
|
|
#define VTK_MAX_SPATIAL_REP_LEVEL 24
|
|
|
|
class vtkLocator;
|
|
class vtkDataSet;
|
|
|
|
class VTK_GRAPHICS_EXPORT vtkSpatialRepresentationFilter : public vtkPolyDataSource
|
|
{
|
|
public:
|
|
static vtkSpatialRepresentationFilter *New();
|
|
vtkTypeRevisionMacro(vtkSpatialRepresentationFilter,vtkPolyDataSource);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Set/Get the locator that will be used to generate the representation.
|
|
virtual void SetSpatialRepresentation(vtkLocator*);
|
|
vtkGetObjectMacro(SpatialRepresentation,vtkLocator);
|
|
|
|
// Description:
|
|
// Get the maximum number of outputs actually available.
|
|
vtkGetMacro(Level,int);
|
|
|
|
// Description:
|
|
// A special form of the GetOutput() method that returns multiple outputs.
|
|
vtkPolyData *GetOutput(int level);
|
|
|
|
// Description:
|
|
// Output of terminal nodes/leaves.
|
|
vtkPolyData *GetOutput();
|
|
|
|
// Description:
|
|
// Reset requested output levels
|
|
void ResetOutput();
|
|
|
|
// Description:
|
|
// Set / get the input data or filter.
|
|
virtual void SetInput(vtkDataSet *input);
|
|
vtkDataSet *GetInput();
|
|
|
|
protected:
|
|
vtkSpatialRepresentationFilter();
|
|
~vtkSpatialRepresentationFilter();
|
|
|
|
void Execute();
|
|
void GenerateOutput();
|
|
|
|
int Level;
|
|
int TerminalNodesRequested;
|
|
|
|
vtkLocator *SpatialRepresentation;
|
|
|
|
virtual void ReportReferences(vtkGarbageCollector*);
|
|
virtual int FillInputPortInformation(int, vtkInformation*);
|
|
private:
|
|
vtkSpatialRepresentationFilter(const vtkSpatialRepresentationFilter&); // Not implemented.
|
|
void operator=(const vtkSpatialRepresentationFilter&); // Not implemented.
|
|
};
|
|
|
|
#endif
|
|
|
|
|
|
|