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.
128 lines
4.2 KiB
128 lines
4.2 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkTransformToGrid.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 vtkTransformToGrid - create a grid for a vtkGridTransform
|
|
// .SECTION Description
|
|
// vtkTransformToGrid takes any transform as input and produces a grid
|
|
// for use by a vtkGridTransform. This can be used, for example, to
|
|
// invert a grid transform, concatenate two grid transforms, or to
|
|
// convert a thin plate spline transform into a grid transform.
|
|
// .SECTION See Also
|
|
// vtkGridTransform vtkThinPlateSplineTransform vtkAbstractTransform
|
|
|
|
#ifndef __vtkTransformToGrid_h
|
|
#define __vtkTransformToGrid_h
|
|
|
|
#include "vtkAlgorithm.h"
|
|
#include "vtkImageData.h" // makes things a bit easier
|
|
|
|
class vtkAbstractTransform;
|
|
|
|
class VTK_HYBRID_EXPORT vtkTransformToGrid : public vtkAlgorithm
|
|
{
|
|
public:
|
|
static vtkTransformToGrid *New();
|
|
vtkTypeRevisionMacro(vtkTransformToGrid,vtkAlgorithm);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Set/Get the transform which will be converted into a grid.
|
|
virtual void SetInput(vtkAbstractTransform*);
|
|
vtkGetObjectMacro(Input,vtkAbstractTransform);
|
|
|
|
// Description:
|
|
// Get/Set the extent of the grid.
|
|
vtkSetVector6Macro(GridExtent,int);
|
|
vtkGetVector6Macro(GridExtent,int);
|
|
|
|
// Description:
|
|
// Get/Set the origin of the grid.
|
|
vtkSetVector3Macro(GridOrigin,double);
|
|
vtkGetVector3Macro(GridOrigin,double);
|
|
|
|
// Description:
|
|
// Get/Set the spacing between samples in the grid.
|
|
vtkSetVector3Macro(GridSpacing,double);
|
|
vtkGetVector3Macro(GridSpacing,double);
|
|
|
|
// Description:
|
|
// Get/Set the scalar type of the grid. The default is
|
|
// double.
|
|
vtkSetMacro(GridScalarType,int);
|
|
vtkGetMacro(GridScalarType,int);
|
|
void SetGridScalarTypeToFloat(){this->SetGridScalarType(VTK_DOUBLE);};
|
|
void SetGridScalarTypeToShort(){this->SetGridScalarType(VTK_SHORT);};
|
|
void SetGridScalarTypeToUnsignedShort()
|
|
{this->SetGridScalarType(VTK_UNSIGNED_SHORT);};
|
|
void SetGridScalarTypeToUnsignedChar()
|
|
{this->SetGridScalarType(VTK_UNSIGNED_CHAR);};
|
|
void SetGridScalarTypeToChar()
|
|
{this->SetGridScalarType(VTK_CHAR);};
|
|
|
|
// Description:
|
|
// Get the scale and shift to convert integer grid elements into
|
|
// real values: dx = scale*di + shift. If the grid is of double type,
|
|
// then scale = 1 and shift = 0.
|
|
double GetDisplacementScale() {
|
|
this->UpdateShiftScale(); return this->DisplacementScale; };
|
|
double GetDisplacementShift() {
|
|
this->UpdateShiftScale(); return this->DisplacementShift; };
|
|
|
|
// Description:
|
|
// Get the output data object for a port on this algorithm.
|
|
vtkImageData* GetOutput();
|
|
|
|
// Description:
|
|
// see vtkAlgorithm for details
|
|
virtual int ProcessRequest(vtkInformation*,
|
|
vtkInformationVector**,
|
|
vtkInformationVector*);
|
|
|
|
protected:
|
|
vtkTransformToGrid();
|
|
~vtkTransformToGrid();
|
|
|
|
void RequestInformation (vtkInformation *,
|
|
vtkInformationVector **, vtkInformationVector *);
|
|
|
|
void RequestData(vtkInformation *,
|
|
vtkInformationVector **, vtkInformationVector *);
|
|
|
|
// Description:
|
|
// Internal method to calculate the shift and scale values which
|
|
// will provide maximum grid precision for a particular integer type.
|
|
void UpdateShiftScale();
|
|
|
|
unsigned long GetMTime();
|
|
|
|
vtkAbstractTransform *Input;
|
|
|
|
int GridScalarType;
|
|
int GridExtent[6];
|
|
double GridOrigin[3];
|
|
double GridSpacing[3];
|
|
|
|
double DisplacementScale;
|
|
double DisplacementShift;
|
|
vtkTimeStamp ShiftScaleTime;
|
|
|
|
// see algorithm for more info
|
|
virtual int FillOutputPortInformation(int port, vtkInformation* info);
|
|
|
|
private:
|
|
vtkTransformToGrid(const vtkTransformToGrid&); // Not implemented.
|
|
void operator=(const vtkTransformToGrid&); // Not implemented.
|
|
};
|
|
|
|
#endif
|
|
|