00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00034
#ifndef __vtkUniformGrid_h
00035
#define __vtkUniformGrid_h
00036
00037
#include "vtkDataSet.h"
00038
00039
#include "vtkStructuredData.h"
00040
00041
class vtkDataArray;
00042
class vtkEmptyCell;
00043
class vtkImageData;
00044
class vtkLine;
00045
class vtkPixel;
00046
class vtkVertex;
00047
class vtkVoxel;
00048
class vtkStructuredVisibilityConstraint;
00049
class vtkUnsignedCharArray;
00050
00051 class VTK_COMMON_EXPORT vtkUniformGrid :
public vtkDataSet
00052 {
00053
public:
00054
static vtkUniformGrid *
New();
00055
00056 vtkTypeRevisionMacro(vtkUniformGrid,
vtkDataSet);
00057
void PrintSelf(ostream& os,
vtkIndent indent);
00058
00061
void CopyStructure(
vtkDataSet *ds);
00062
00064 int GetDataObjectType() {
return VTK_UNIFORM_GRID;};
00065
00067
00068
vtkIdType GetNumberOfCells();
00069
vtkIdType GetNumberOfPoints();
00070
double *
GetPoint(
vtkIdType ptId);
00071
void GetPoint(
vtkIdType id,
double x[3]);
00072
vtkCell *
GetCell(
vtkIdType cellId);
00073
void GetCell(
vtkIdType cellId,
vtkGenericCell *cell);
00074
void GetCellBounds(
vtkIdType cellId,
double bounds[6]);
00075 vtkIdType FindPoint(
double x,
double y,
double z) {
return this->
vtkDataSet::FindPoint(x, y, z);};
00076
vtkIdType FindPoint(
double x[3]);
00077
vtkIdType FindCell(
double x[3],
vtkCell *cell,
vtkIdType cellId,
double tol2,
00078
int& subId,
double pcoords[3],
double *weights);
00079
vtkIdType FindCell(
double x[3],
vtkCell *cell,
vtkGenericCell *gencell,
00080
vtkIdType cellId,
double tol2,
int& subId,
00081
double pcoords[3],
double *weights);
00082
vtkCell *
FindAndGetCell(
double x[3],
vtkCell *cell,
vtkIdType cellId,
00083
double tol2,
int& subId,
double pcoords[3],
00084
double *weights);
00085
int GetCellType(
vtkIdType cellId);
00086 void GetCellPoints(
vtkIdType cellId,
vtkIdList *ptIds)
00087 {
vtkStructuredData::GetCellPoints(cellId,ptIds,this->DataDescription,
00088 this->GetDimensions());}
00089 void GetPointCells(
vtkIdType ptId,
vtkIdList *cellIds)
00090 {
vtkStructuredData::GetPointCells(ptId,cellIds,this->GetDimensions());}
00091
void ComputeBounds();
00092
void Initialize();
00093 int GetMaxCellSize() {
return 8;};
00094
virtual void GetScalarRange(
double range[2]);
00095 double *
GetScalarRange() {
return this->Superclass::GetScalarRange();}
00097
00099
00101
void SetUpdateExtent(
int piece,
int numPieces,
int ghostLevel);
00102 void SetUpdateExtent(
int piece,
int numPieces)
00103 {this->
SetUpdateExtent(piece, numPieces, 0);}
00105
00107
00111 void SetUpdateExtent(
int x1,
int x2,
int y1,
int y2,
int z1,
int z2 )
00112 { this->Superclass::SetUpdateExtent( x1, x2, y1, y2, z1, z2 ); };
00113 void SetUpdateExtent(
int ext[6] )
00114 { this->Superclass::SetUpdateExtent( ext ); };
00116
00118
void SetDimensions(
int i,
int j,
int k);
00119
00121
void SetDimensions(
int dims[3]);
00122
00124
00126
int *GetDimensions();
00127
void GetDimensions(
int dims[3]);
00129
00135
int ComputeStructuredCoordinates(
double x[3],
int ijk[3],
double pcoords[3]);
00136
00138
int GetDataDimension();
00139
00141
00144
void SetExtent(
int extent[6]);
00145
void SetExtent(
int x1,
int x2,
int y1,
int y2,
int z1,
int z2);
00146 vtkGetVector6Macro(Extent,
int);
00148
00154
unsigned long GetActualMemorySize();
00155
00157
00159 vtkSetVector3Macro(Spacing,
double);
00160 vtkGetVector3Macro(Spacing,
double);
00162
00164
00166 vtkSetVector3Macro(Origin,
double);
00167 vtkGetVector3Macro(Origin,
double);
00169
00171
00172
void ShallowCopy(
vtkDataObject *src);
00173
void DeepCopy(
vtkDataObject *src);
00175
00177 int GetExtentType() {
return VTK_3D_EXTENT; };
00178
00180
00184
void BlankPoint(
vtkIdType ptId);
00185
void UnBlankPoint(
vtkIdType ptId);
00187
00189
00192
void BlankCell(
vtkIdType ptId);
00193
void UnBlankCell(
vtkIdType ptId);
00195
00197
vtkUnsignedCharArray *GetPointVisibilityArray();
00198
00202
void SetPointVisibilityArray(
vtkUnsignedCharArray *pointVisibility);
00203
00205
vtkUnsignedCharArray *GetCellVisibilityArray();
00206
00210
void SetCellVisibilityArray(
vtkUnsignedCharArray *pointVisibility);
00211
00214
unsigned char IsPointVisible(
vtkIdType ptId);
00215
00218
unsigned char IsCellVisible(
vtkIdType cellId);
00219
00222
unsigned char GetPointBlanking();
00223
00226
unsigned char GetCellBlanking();
00227
00228
protected:
00229 vtkUniformGrid();
00230 ~vtkUniformGrid();
00231
00232
00233 vtkVertex *Vertex;
00234 vtkLine *Line;
00235 vtkPixel *Pixel;
00236 vtkVoxel *Voxel;
00237 vtkEmptyCell *EmptyCell;
00238
00239
00240
00241
00242 int Dimensions[3];
00243 int DataDescription;
00244
00245 double Origin[3];
00246 double Spacing[3];
00247
00248 vtkStructuredVisibilityConstraint* PointVisibility;
00249
00250
void SetPointVisibility(
vtkStructuredVisibilityConstraint *pointVisibility);
00251 vtkGetObjectMacro(PointVisibility,
vtkStructuredVisibilityConstraint);
00252
00253 vtkStructuredVisibilityConstraint* CellVisibility;
00254
00255
void SetCellVisibility(
vtkStructuredVisibilityConstraint *cellVisibility);
00256 vtkGetObjectMacro(CellVisibility,
vtkStructuredVisibilityConstraint);
00257
00258
private:
00259
void InternalUniformGridCopy(vtkUniformGrid *src);
00260
void InternalUniformGridCopy(
vtkImageData *src);
00261
private:
00262 vtkUniformGrid(
const vtkUniformGrid&);
00263
void operator=(
const vtkUniformGrid&);
00264 };
00265
00266
00267 inline void vtkUniformGrid::GetPoint(
vtkIdType id,
double x[3])
00268 {
00269
double *p=this->
GetPoint(
id);
00270 x[0] = p[0]; x[1] = p[1]; x[2] = p[2];
00271 }
00272
00273
00274
00275 inline vtkIdType vtkUniformGrid::GetNumberOfPoints()
00276 {
00277
int *dims = this->
GetDimensions();
00278
return dims[0]*dims[1]*dims[2];
00279 }
00280
00281 inline int vtkUniformGrid::GetDataDimension()
00282 {
00283
return vtkStructuredData::GetDataDimension(this->DataDescription);
00284 }
00285
00286
#endif
00287
00288
00289