dox/Common/vtkRectilinearGrid.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00045
#ifndef __vtkRectilinearGrid_h
00046
#define __vtkRectilinearGrid_h
00047
00048
#include "vtkDataSet.h"
00049
#include "vtkStructuredData.h"
00050
00051
class vtkVertex;
00052
class vtkLine;
00053
class vtkPixel;
00054
class vtkVoxel;
00055
class vtkDataArray;
00056
00057 class VTK_COMMON_EXPORT vtkRectilinearGrid :
public vtkDataSet
00058 {
00059
public:
00060
static vtkRectilinearGrid *
New();
00061
00062 vtkTypeRevisionMacro(vtkRectilinearGrid,
vtkDataSet);
00063
void PrintSelf(ostream& os,
vtkIndent indent);
00064
00066 int GetDataObjectType() {
return VTK_RECTILINEAR_GRID;};
00067
00070
void CopyStructure(
vtkDataSet *ds);
00071
00073
void Initialize();
00074
00076
00077
vtkIdType GetNumberOfCells();
00078
vtkIdType GetNumberOfPoints();
00079
float *
GetPoint(
vtkIdType ptId);
00080
void GetPoint(
vtkIdType id,
float x[3]);
00081
vtkCell *
GetCell(
vtkIdType cellId);
00082
void GetCell(
vtkIdType cellId,
vtkGenericCell *cell);
00083
void GetCellBounds(
vtkIdType cellId,
float bounds[6]);
00084 int FindPoint(
float x,
float y,
float z) {
return this->
vtkDataSet::FindPoint(x, y, z);};
00085
vtkIdType FindPoint(
float x[3]);
00086
vtkIdType FindCell(
float x[3],
vtkCell *cell,
vtkIdType cellId,
float tol2,
00087
int& subId,
float pcoords[3],
float *weights);
00088
vtkIdType FindCell(
float x[3],
vtkCell *cell,
vtkGenericCell *gencell,
00089
vtkIdType cellId,
float tol2,
int& subId,
00090
float pcoords[3],
float *weights);
00091
vtkCell *
FindAndGetCell(
float x[3],
vtkCell *cell,
vtkIdType cellId,
00092
float tol2,
int& subId,
float pcoords[3],
00093
float *weights);
00094
int GetCellType(
vtkIdType cellId);
00095 void GetCellPoints(
vtkIdType cellId,
vtkIdList *ptIds)
00096 {
vtkStructuredData::GetCellPoints(cellId,ptIds,this->DataDescription,
00097 this->Dimensions);}
00098 void GetPointCells(
vtkIdType ptId,
vtkIdList *cellIds)
00099 {
vtkStructuredData::GetPointCells(ptId,cellIds,this->Dimensions);}
00100
void ComputeBounds();
00101 int GetMaxCellSize() {
return 8;};
00102
void GetCellNeighbors(
vtkIdType cellId,
vtkIdList *ptIds,
00103
vtkIdList *cellIds);
00105
00107
00109
void SetDimensions(
int i,
int j,
int k);
00110
void SetDimensions(
int dim[3]);
00112
00114
00115 vtkGetVectorMacro(Dimensions,
int,3);
00117
00119
int GetDataDimension();
00120
00126
int ComputeStructuredCoordinates(
float x[3],
int ijk[3],
float pcoords[3]);
00127
00130
vtkIdType ComputePointId(
int ijk[3]);
00131
00134
vtkIdType ComputeCellId(
int ijk[3]);
00135
00137
00138
virtual void SetXCoordinates(
vtkDataArray*);
00139 vtkGetObjectMacro(XCoordinates,
vtkDataArray);
00141
00143
00144
virtual void SetYCoordinates(
vtkDataArray*);
00145 vtkGetObjectMacro(YCoordinates,
vtkDataArray);
00147
00149
00150
virtual void SetZCoordinates(
vtkDataArray*);
00151 vtkGetObjectMacro(ZCoordinates,
vtkDataArray);
00153
00155
00158
void SetUpdateExtent(
int piece,
int numPieces,
int ghostLevel);
00159 void SetUpdateExtent(
int piece,
int numPieces)
00160 {this->
SetUpdateExtent(piece, numPieces, 0);}
00162
00164
00165 void SetUpdateExtent(
int x1,
int x2,
int y1,
int y2,
int z1,
int z2 )
00166 { this->
vtkDataSet::SetUpdateExtent( x1, x2, y1, y2, z1, z2 ); };
00167 void SetUpdateExtent(
int ext[6] )
00168 { this->
vtkDataSet::SetUpdateExtent( ext ); };
00170
00172
00175
void SetExtent(
int extent[6]);
00176
void SetExtent(
int x1,
int x2,
int y1,
int y2,
int z1,
int z2);
00177 vtkGetVector6Macro(Extent,
int);
00179
00185
unsigned long GetActualMemorySize();
00186
00188
00189
void ShallowCopy(
vtkDataObject *src);
00190
void DeepCopy(
vtkDataObject *src);
00192
00198
virtual void UpdateData();
00199
00200
protected:
00201 vtkRectilinearGrid();
00202 ~vtkRectilinearGrid();
00203
00204
00205 vtkVertex *Vertex;
00206 vtkLine *Line;
00207 vtkPixel *Pixel;
00208 vtkVoxel *Voxel;
00209
00210
00211 int GetExtentType() {
return VTK_3D_EXTENT; };
00212
00216
virtual void Crop();
00217
00218 int Dimensions[3];
00219 int DataDescription;
00220
00221 vtkDataArray *XCoordinates;
00222 vtkDataArray *YCoordinates;
00223 vtkDataArray *ZCoordinates;
00224
00225
00226 float PointReturn[3];
00227
00228
private:
00230
00231
void GetCellNeighbors(
vtkIdType cellId,
vtkIdList& ptIds,
vtkIdList& cellIds)
00232 {this->
GetCellNeighbors(cellId, &ptIds, &cellIds);}
00234
private:
00235 vtkRectilinearGrid(
const vtkRectilinearGrid&);
00236
void operator=(
const vtkRectilinearGrid&);
00237 };
00238
00239
00240
00241
00242 inline vtkIdType vtkRectilinearGrid::GetNumberOfCells()
00243 {
00244
vtkIdType nCells=1;
00245
int i;
00246
00247
for (i=0; i<3; i++)
00248 {
00249
if (this->
Dimensions[i] <= 0)
00250 {
00251
return 0;
00252 }
00253
if (this->
Dimensions[i] > 1)
00254 {
00255 nCells *= (this->
Dimensions[i]-1);
00256 }
00257 }
00258
00259
return nCells;
00260 }
00261
00262 inline vtkIdType vtkRectilinearGrid::GetNumberOfPoints()
00263 {
00264
return this->
Dimensions[0]*this->
Dimensions[1]*this->Dimensions[2];
00265 }
00266
00267 inline int vtkRectilinearGrid::GetDataDimension()
00268 {
00269
return vtkStructuredData::GetDataDimension(this->DataDescription);
00270 }
00271
00272 inline vtkIdType vtkRectilinearGrid::ComputePointId(
int ijk[3])
00273 {
00274
return vtkStructuredData::ComputePointId(this->Dimensions,ijk);
00275 }
00276
00277 inline vtkIdType vtkRectilinearGrid::ComputeCellId(
int ijk[3])
00278 {
00279
return vtkStructuredData::ComputeCellId(this->Dimensions,ijk);
00280 }
00281
00282
#endif