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
00041
#ifndef __vtkRectilinearGrid_h
00042
#define __vtkRectilinearGrid_h
00043
00044
#include "vtkDataSet.h"
00045
#include "vtkStructuredData.h"
00046
00047
class vtkVertex;
00048
class vtkLine;
00049
class vtkPixel;
00050
class vtkVoxel;
00051
class vtkDataArray;
00052
00053 class VTK_COMMON_EXPORT vtkRectilinearGrid :
public vtkDataSet
00054 {
00055
public:
00056
static vtkRectilinearGrid *
New();
00057
00058 vtkTypeRevisionMacro(vtkRectilinearGrid,
vtkDataSet);
00059
void PrintSelf(ostream& os,
vtkIndent indent);
00060
00062 int GetDataObjectType() {
return VTK_RECTILINEAR_GRID;};
00063
00066
void CopyStructure(
vtkDataSet *ds);
00067
00069
void Initialize();
00070
00072
00073
vtkIdType GetNumberOfCells();
00074
vtkIdType GetNumberOfPoints();
00075
double *
GetPoint(
vtkIdType ptId);
00076
void GetPoint(
vtkIdType id,
double x[3]);
00077
vtkCell *
GetCell(
vtkIdType cellId);
00078
void GetCell(
vtkIdType cellId,
vtkGenericCell *cell);
00079
void GetCellBounds(
vtkIdType cellId,
double bounds[6]);
00080 int FindPoint(
double x,
double y,
double z) {
return this->
vtkDataSet::FindPoint(x, y, z);};
00081
vtkIdType FindPoint(
double x[3]);
00082
vtkIdType FindCell(
double x[3],
vtkCell *cell,
vtkIdType cellId,
double tol2,
00083
int& subId,
double pcoords[3],
double *weights);
00084
vtkIdType FindCell(
double x[3],
vtkCell *cell,
vtkGenericCell *gencell,
00085
vtkIdType cellId,
double tol2,
int& subId,
00086
double pcoords[3],
double *weights);
00087
vtkCell *
FindAndGetCell(
double x[3],
vtkCell *cell,
vtkIdType cellId,
00088
double tol2,
int& subId,
double pcoords[3],
00089
double *weights);
00090
int GetCellType(
vtkIdType cellId);
00091 void GetCellPoints(
vtkIdType cellId,
vtkIdList *ptIds)
00092 {
vtkStructuredData::GetCellPoints(cellId,ptIds,this->DataDescription,
00093 this->Dimensions);}
00094 void GetPointCells(
vtkIdType ptId,
vtkIdList *cellIds)
00095 {
vtkStructuredData::GetPointCells(ptId,cellIds,this->Dimensions);}
00096
void ComputeBounds();
00097 int GetMaxCellSize() {
return 8;};
00098
void GetCellNeighbors(
vtkIdType cellId,
vtkIdList *ptIds,
00099
vtkIdList *cellIds);
00101
00103
00105
void SetDimensions(
int i,
int j,
int k);
00106
void SetDimensions(
int dim[3]);
00108
00110
00111 vtkGetVectorMacro(Dimensions,
int,3);
00113
00115
int GetDataDimension();
00116
00122
int ComputeStructuredCoordinates(
double x[3],
int ijk[3],
double pcoords[3]);
00123
00126
vtkIdType ComputePointId(
int ijk[3]);
00127
00130
vtkIdType ComputeCellId(
int ijk[3]);
00131
00133
00134
virtual void SetXCoordinates(
vtkDataArray*);
00135 vtkGetObjectMacro(XCoordinates,
vtkDataArray);
00137
00139
00140
virtual void SetYCoordinates(
vtkDataArray*);
00141 vtkGetObjectMacro(YCoordinates,
vtkDataArray);
00143
00145
00146
virtual void SetZCoordinates(
vtkDataArray*);
00147 vtkGetObjectMacro(ZCoordinates,
vtkDataArray);
00149
00151
00154
void SetUpdateExtent(
int piece,
int numPieces,
int ghostLevel);
00155 void SetUpdateExtent(
int piece,
int numPieces)
00156 {this->
SetUpdateExtent(piece, numPieces, 0);}
00158
00160
00161 void SetUpdateExtent(
int x1,
int x2,
int y1,
int y2,
int z1,
int z2 )
00162 { this->
vtkDataSet::SetUpdateExtent( x1, x2, y1, y2, z1, z2 ); };
00163 void SetUpdateExtent(
int ext[6] )
00164 { this->
vtkDataSet::SetUpdateExtent( ext ); };
00166
00168
00171
void SetExtent(
int extent[6]);
00172
void SetExtent(
int x1,
int x2,
int y1,
int y2,
int z1,
int z2);
00173 vtkGetVector6Macro(Extent,
int);
00175
00181
unsigned long GetActualMemorySize();
00182
00184
00185
void ShallowCopy(
vtkDataObject *src);
00186
void DeepCopy(
vtkDataObject *src);
00188
00194
virtual void UpdateData();
00195
00197 int GetExtentType() {
return VTK_3D_EXTENT; };
00198
00199
protected:
00200 vtkRectilinearGrid();
00201 ~vtkRectilinearGrid();
00202
00203
00204 vtkVertex *Vertex;
00205 vtkLine *Line;
00206 vtkPixel *Pixel;
00207 vtkVoxel *Voxel;
00208
00212
virtual void Crop();
00213
00214 int Dimensions[3];
00215 int DataDescription;
00216
00217 vtkDataArray *XCoordinates;
00218 vtkDataArray *YCoordinates;
00219 vtkDataArray *ZCoordinates;
00220
00221
00222 double PointReturn[3];
00223
00224
private:
00226
00227
void GetCellNeighbors(
vtkIdType cellId,
vtkIdList& ptIds,
vtkIdList& cellIds)
00228 {this->
GetCellNeighbors(cellId, &ptIds, &cellIds);}
00230
private:
00231 vtkRectilinearGrid(
const vtkRectilinearGrid&);
00232
void operator=(
const vtkRectilinearGrid&);
00233 };
00234
00235
00236
00237
00238 inline vtkIdType vtkRectilinearGrid::GetNumberOfCells()
00239 {
00240
vtkIdType nCells=1;
00241
int i;
00242
00243
for (i=0; i<3; i++)
00244 {
00245
if (this->
Dimensions[i] <= 0)
00246 {
00247
return 0;
00248 }
00249
if (this->
Dimensions[i] > 1)
00250 {
00251 nCells *= (this->
Dimensions[i]-1);
00252 }
00253 }
00254
00255
return nCells;
00256 }
00257
00258 inline vtkIdType vtkRectilinearGrid::GetNumberOfPoints()
00259 {
00260
return this->
Dimensions[0]*this->
Dimensions[1]*this->Dimensions[2];
00261 }
00262
00263 inline int vtkRectilinearGrid::GetDataDimension()
00264 {
00265
return vtkStructuredData::GetDataDimension(this->DataDescription);
00266 }
00267
00268 inline vtkIdType vtkRectilinearGrid::ComputePointId(
int ijk[3])
00269 {
00270
return vtkStructuredData::ComputePointId(this->Dimensions,ijk);
00271 }
00272
00273 inline vtkIdType vtkRectilinearGrid::ComputeCellId(
int ijk[3])
00274 {
00275
return vtkStructuredData::ComputeCellId(this->Dimensions,ijk);
00276 }
00277
00278
#endif