vtkGenericAdaptorCell Class Reference

#include <vtkGenericAdaptorCell.h>

Inheritance diagram for vtkGenericAdaptorCell:

Inheritance graph
[legend]
Collaboration diagram for vtkGenericAdaptorCell:

Collaboration graph
[legend]

List of all members.


Detailed Description

defines cell interface

In VTK, spatial-temporal data is defined in terms of a dataset which is composed of cells. The cells are topological entities over which an interpolation field is applied. Cells are defined in terms of a topology (e.g., vertices, lines, triangles, polygons, tetrahedra, etc.), points that instantiate the geometry of the cells, and interpolation fields (in the general case one interpolation field is for geometry, the other is for attribute data associated with the cell).

Currently most algorithms in VTK use vtkCell and vtkDataSet, which make assumptions about the nature of datasets, cells, and attributes. In particular, this abstraction assumes that cell interpolation functions are linear, or products of linear functions. Further, VTK implements most of the interpolation functions. This implementation starts breaking down as the complexity of the interpolation (or basis) functions increases.

vtkGenericAdaptorCell addresses these issues by providing more general abstraction for cells. It also adopts modern C++ practices including using iterators. The vtkGenericAdaptorCell is designed to fit within the adaptor framework; meaning that it is meant to adapt VTK to external simulation systems (see the GenericFiltering/README.html).

Please note that most cells are defined in terms of other cells (the boundary cells). They are also defined in terms of points, which are not the same as vertices (vertices are a 0-D cell; points represent a position in space).

Another important concept is the notion of DOFNodes. These concept supports cell types with complex interpolation functions. For example, higher-order p-method finite elements may have different functions on each of their topological features (edges, faces, region). The coefficients of these polynomial functions are associated with DOFNodes. (There is a single DOFNode for each topological feature.) Note that from this perspective, points are used to establish the topological form of the cell; mid-side nodes and such are considered DOFNodes.

See also:
vtkGenericDataSet
Tests:
vtkGenericAdaptorCell (Tests)

Definition at line 94 of file vtkGenericAdaptorCell.h.


Public Types

typedef vtkObject Superclass

Public Member Functions

virtual const char * GetClassName ()
virtual int IsA (const char *type)
void PrintSelf (ostream &os, vtkIndent indent)
virtual vtkIdType GetId ()=0
virtual int IsInDataSet ()=0
virtual int GetType ()=0
virtual int GetDimension ()=0
virtual int GetGeometryOrder ()=0
int IsGeometryLinear ()
virtual int GetAttributeOrder (vtkGenericAttribute *a)=0
virtual int GetHighestOrderAttribute (vtkGenericAttributeCollection *ac)
int IsAttributeLinear (vtkGenericAttribute *a)
virtual int IsPrimary ()=0
virtual int GetNumberOfPoints ()=0
virtual int GetNumberOfBoundaries (int dim=-1)=0
virtual int GetNumberOfDOFNodes ()=0
virtual void GetPointIterator (vtkGenericPointIterator *it)=0
virtual vtkGenericCellIteratorNewCellIterator ()=0
virtual void GetBounds (double bounds[6])=0
virtual double * GetBounds ()
virtual double GetLength2 ()
virtual int GetParametricCenter (double pcoords[3])=0
virtual double GetParametricDistance (double pcoords[3])=0
virtual double * GetParametricCoords ()=0
virtual int IsFaceOnBoundary (vtkIdType faceId)=0
virtual int IsOnBoundary ()=0
virtual void GetPointIds (vtkIdType *id)=0
virtual int * GetFaceArray (int faceId)=0
virtual int GetNumberOfVerticesOnFace (int faceId)=0
virtual int * GetEdgeArray (int edgeId)=0
virtual void GetBoundaryIterator (vtkGenericCellIterator *boundaries, int dim=-1)=0
virtual int CountNeighbors (vtkGenericAdaptorCell *boundary)=0
virtual void CountEdgeNeighbors (int *sharing)=0
virtual void GetNeighbors (vtkGenericAdaptorCell *boundary, vtkGenericCellIterator *neighbors)=0
virtual int FindClosestBoundary (int subId, double pcoords[3], vtkGenericCellIterator *&boundary)=0
virtual int EvaluatePosition (double x[3], double *closestPoint, int &subId, double pcoords[3], double &dist2)=0
virtual void EvaluateLocation (int subId, double pcoords[3], double x[3])=0
virtual void InterpolateTuple (vtkGenericAttribute *a, double pcoords[3], double *val)=0
virtual void InterpolateTuple (vtkGenericAttributeCollection *c, double pcoords[3], double *val)=0
virtual void Contour (vtkContourValues *values, vtkImplicitFunction *f, vtkGenericAttributeCollection *attributes, vtkGenericCellTessellator *tess, vtkPointLocator *locator, vtkCellArray *verts, vtkCellArray *lines, vtkCellArray *polys, vtkPointData *outPd, vtkCellData *outCd, vtkPointData *internalPd, vtkPointData *secondaryPd, vtkCellData *secondaryCd)
virtual void Clip (double value, vtkImplicitFunction *f, vtkGenericAttributeCollection *attributes, vtkGenericCellTessellator *tess, int insideOut, vtkPointLocator *locator, vtkCellArray *connectivity, vtkPointData *outPd, vtkCellData *outCd, vtkPointData *internalPd, vtkPointData *secondaryPd, vtkCellData *secondaryCd)
virtual int IntersectWithLine (double p1[3], double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId)=0
virtual void Derivatives (int subId, double pcoords[3], vtkGenericAttribute *attribute, double *derivs)=0
virtual void Tessellate (vtkGenericAttributeCollection *attributes, vtkGenericCellTessellator *tess, vtkPoints *points, vtkPointLocator *locator, vtkCellArray *cellArray, vtkPointData *internalPd, vtkPointData *pd, vtkCellData *cd, vtkUnsignedCharArray *types)
virtual void TriangulateFace (vtkGenericAttributeCollection *attributes, vtkGenericCellTessellator *tess, int index, vtkPoints *points, vtkPointLocator *locator, vtkCellArray *cellArray, vtkPointData *internalPd, vtkPointData *pd, vtkCellData *cd)

Static Public Member Functions

static int IsTypeOf (const char *type)
static vtkGenericAdaptorCellSafeDownCast (vtkObject *o)

Protected Member Functions

 vtkGenericAdaptorCell ()
virtual ~vtkGenericAdaptorCell ()
void Reset ()
void AllocateTuples (int size)

Protected Attributes

vtkTetraTetra
vtkTriangleTriangle
vtkLineLine
vtkVertexVertex
vtkQuadQuad
vtkHexahedronHexa
vtkWedgeWedge
vtkPyramidPyramid
vtkDoubleArrayInternalPoints
vtkCellArrayInternalCellArray
vtkDoubleArrayInternalScalars
vtkDoubleArrayPointDataScalars
vtkIdListInternalIds
vtkDoubleArrayScalars
vtkPointDataPointData
vtkCellDataCellData
double * Tuples
int TuplesCapacity
double Bounds [6]

Member Typedef Documentation

Reimplemented from vtkObject.

Reimplemented in vtkBridgeCell.

Definition at line 97 of file vtkGenericAdaptorCell.h.


Constructor & Destructor Documentation

vtkGenericAdaptorCell::vtkGenericAdaptorCell (  )  [protected]

virtual vtkGenericAdaptorCell::~vtkGenericAdaptorCell (  )  [protected, virtual]


Member Function Documentation

virtual const char* vtkGenericAdaptorCell::GetClassName (  )  [virtual]

Reimplemented from vtkObject.

Reimplemented in vtkBridgeCell.

static int vtkGenericAdaptorCell::IsTypeOf ( const char *  name  )  [static]

Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtkObject.

Reimplemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::IsA ( const char *  name  )  [virtual]

Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtkObject.

Reimplemented in vtkBridgeCell.

static vtkGenericAdaptorCell* vtkGenericAdaptorCell::SafeDownCast ( vtkObject o  )  [static]

Reimplemented from vtkObject.

Reimplemented in vtkBridgeCell.

void vtkGenericAdaptorCell::PrintSelf ( ostream &  os,
vtkIndent  indent 
) [virtual]

Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkObject.

Reimplemented in vtkBridgeCell.

virtual vtkIdType vtkGenericAdaptorCell::GetId (  )  [pure virtual]

Unique identification number of the cell over the whole data set. This unique key may not be contiguous.

Implemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::IsInDataSet (  )  [pure virtual]

Does `this' a cell of a dataset? (otherwise, it is a boundary cell)

Implemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::GetType (  )  [pure virtual]

Return the type of the current cell.

Postcondition:
(result==VTK_HIGHER_ORDER_EDGE)|| (result==VTK_HIGHER_ORDER_TRIANGLE)|| (result==VTK_HIGHER_ORDER_TETRAHEDRON)

Implemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::GetDimension (  )  [pure virtual]

Return the topological dimension of the current cell.

Postcondition:
valid_result: result>=0 && result<=3

Implemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::GetGeometryOrder (  )  [pure virtual]

Return the interpolation order of the geometry.

Postcondition:
positive_result: result>=0

Implemented in vtkBridgeCell.

int vtkGenericAdaptorCell::IsGeometryLinear (  ) 

Does the cell have a non-linear interpolation for the geometry?

Postcondition:
definition: result==(GetGeometryOrder()==1)

Reimplemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::GetAttributeOrder ( vtkGenericAttribute a  )  [pure virtual]

Return the interpolation order of attribute `a' on the cell (may differ by cell).

Precondition:
a_exists: a!=0
Postcondition:
positive_result: result>=0

Implemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::GetHighestOrderAttribute ( vtkGenericAttributeCollection ac  )  [virtual]

Return the index of the first point centered attribute with the highest order in `ac'.

Precondition:
ac_exists: ac!=0
Postcondition:
valid_result: result>=-1 && result<ac->GetNumberOfAttributes()

int vtkGenericAdaptorCell::IsAttributeLinear ( vtkGenericAttribute a  ) 

Does the attribute `a' have a non-linear interpolation?

Precondition:
a_exists: a!=0
Postcondition:
definition: result==(GetAttributeOrder()==1)

Reimplemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::IsPrimary (  )  [pure virtual]

Is the cell primary (i.e. not composite) ?

Implemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::GetNumberOfPoints (  )  [pure virtual]

Return the number of corner points that compose the cell.

Postcondition:
positive_result: result>=0

Implemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::GetNumberOfBoundaries ( int  dim = -1  )  [pure virtual]

Return the number of boundaries of dimension `dim' (or all dimensions greater than 0 and less than GetDimension() if -1) of the cell. When dim is -1, the number of vertices is not included in the count because vertices are a special case: a vertex will have at most a single field value associated with it; DOF nodes may have an arbitrary number of field values associated with them.

Precondition:
valid_dim_range: (dim==-1) || ((dim>=0)&&(dim<GetDimension()))
Postcondition:
positive_result: result>=0

Implemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::GetNumberOfDOFNodes (  )  [pure virtual]

Accumulated number of DOF nodes of the current cell. A DOF node is a component of cell with a given topological dimension. e.g.: a triangle has 4 DOF: 1 face and 3 edges. An hexahedron has 19 DOF: 1 region, 6 faces, and 12 edges. The number of vertices is not included in the count because vertices are a special case: a vertex will have at most a single field value associated with it; DOF nodes may have an arbitrary number of field values associated with them.

Postcondition:
valid_result: result==GetNumberOfBoundaries(-1)+1

Implemented in vtkBridgeCell.

virtual void vtkGenericAdaptorCell::GetPointIterator ( vtkGenericPointIterator it  )  [pure virtual]

Return the points of cell into `it'.

Precondition:
it_exists: it!=0

Implemented in vtkBridgeCell.

virtual vtkGenericCellIterator* vtkGenericAdaptorCell::NewCellIterator (  )  [pure virtual]

Create an empty cell iterator. The user is responsible for deleting it.

Postcondition:
result_exists: result!=0

Implemented in vtkBridgeCell.

virtual void vtkGenericAdaptorCell::GetBoundaryIterator ( vtkGenericCellIterator boundaries,
int  dim = -1 
) [pure virtual]

Return the `boundaries' cells of dimension `dim' (or all dimensions less than GetDimension() if -1) that are part of the boundary of the cell.

Precondition:
valid_dim_range: (dim==-1) || ((dim>=0)&&(dim<GetDimension()))

boundaries_exist: boundaries!=0

Implemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::CountNeighbors ( vtkGenericAdaptorCell boundary  )  [pure virtual]

Number of cells (dimension>boundary->GetDimension()) of the dataset that share the boundary `boundary' of `this'. `this' IS NOT INCLUDED.

Precondition:
boundary_exists: boundary!=0

real_boundary: !boundary->IsInDataSet()

cell_of_the_dataset: IsInDataSet()

boundary: HasBoundary(boundary)

Postcondition:
positive_result: result>=0

Implemented in vtkBridgeCell.

virtual void vtkGenericAdaptorCell::CountEdgeNeighbors ( int *  sharing  )  [pure virtual]

Number of cells (dimension>boundary->GetDimension()) of the dataset that share the boundary `boundary' of `this'. `this' IS NOT INCLUDED.

Precondition:
boundary_exists: boundary!=0

real_boundary: !boundary->IsInDataSet()

cell_of_the_dataset: IsInDataSet()

boundary: HasBoundary(boundary)

Postcondition:
positive_result: result>=0

Implemented in vtkBridgeCell.

virtual void vtkGenericAdaptorCell::GetNeighbors ( vtkGenericAdaptorCell boundary,
vtkGenericCellIterator neighbors 
) [pure virtual]

Put into `neighbors' the cells (dimension>boundary->GetDimension()) of the dataset that share the boundary `boundary' with this cell. `this' IS NOT INCLUDED.

Precondition:
boundary_exists: boundary!=0

real_boundary: !boundary->IsInDataSet()

cell_of_the_dataset: IsInDataSet()

boundary: HasBoundary(boundary)

neighbors_exist: neighbors!=0

Implemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::FindClosestBoundary ( int  subId,
double  pcoords[3],
vtkGenericCellIterator *&  boundary 
) [pure virtual]

Compute the closest boundary of the current sub-cell `subId' for point `pcoord' (in parametric coordinates) in `boundary', and return whether the point is inside the cell or not. `boundary' is of dimension GetDimension()-1.

Precondition:
positive_subId: subId>=0

Implemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::EvaluatePosition ( double  x[3],
double *  closestPoint,
int &  subId,
double  pcoords[3],
double &  dist2 
) [pure virtual]

Is `x' inside the current cell? It also evaluates parametric coordinates `pcoords', sub-cell id `subId' (0 means primary cell), distance squared to the sub-cell in `dist2' and closest corner point `closestPoint'. `dist2' and `closestPoint' are not evaluated if `closestPoint'==0. If a numerical error occurred, -1 is returned and all other results should be ignored.

Postcondition:
valid_result: result==-1 || result==0 || result==1

positive_distance: result!=-1 implies (closestPoint!=0 implies dist2>=0)

Implemented in vtkBridgeCell.

virtual void vtkGenericAdaptorCell::EvaluateLocation ( int  subId,
double  pcoords[3],
double  x[3] 
) [pure virtual]

Determine the global coordinates `x' from sub-cell `subId' and parametric coordinates `pcoords' in the cell.

Precondition:
positive_subId: subId>=0

clamped_pcoords: (0<=pcoords[0])&&(pcoords[0]<=1)&&(0<=pcoords[1]) &&(pcoords[1]<=1)&&(0<=pcoords[2])&&(pcoords[2]<=1)

Implemented in vtkBridgeCell.

virtual void vtkGenericAdaptorCell::InterpolateTuple ( vtkGenericAttribute a,
double  pcoords[3],
double *  val 
) [pure virtual]

Interpolate the attribute `a' at local position `pcoords' of the cell into `val'.

Precondition:
a_exists: a!=0

a_is_point_centered: a->GetCentering()==vtkPointCentered

clamped_point: pcoords[0]>=0 && pcoords[0]<=1 && pcoords[1]>=0 && pcoords[1]<=1 && pcoords[2]>=0 && pcoords[2]<=1

val_exists: val!=0

valid_size: sizeof(val)==a->GetNumberOfComponents()

Implemented in vtkBridgeCell.

virtual void vtkGenericAdaptorCell::InterpolateTuple ( vtkGenericAttributeCollection c,
double  pcoords[3],
double *  val 
) [pure virtual]

Interpolate the whole collection of attributes `c' at local position `pcoords' of the cell into `val'. Only point centered attributes are taken into account.

Precondition:
c_exists: c!=0

clamped_point: pcoords[0]>=0 && pcoords[0]<=1 && pcoords[1]>=0 && pcoords[1]<=1 && pcoords[2]>=0 && pcoords[2]<=1

val_exists: val!=0

valid_size: sizeof(val)==c->GetNumberOfPointCenteredComponents()

Implemented in vtkBridgeCell.

virtual void vtkGenericAdaptorCell::Contour ( vtkContourValues values,
vtkImplicitFunction f,
vtkGenericAttributeCollection attributes,
vtkGenericCellTessellator tess,
vtkPointLocator locator,
vtkCellArray verts,
vtkCellArray lines,
vtkCellArray polys,
vtkPointData outPd,
vtkCellData outCd,
vtkPointData internalPd,
vtkPointData secondaryPd,
vtkCellData secondaryCd 
) [virtual]

Generate a contour (contouring primitives) for each `values' or with respect to an implicit function `f'. Contouring is performed on the scalar attribute (`attributes->GetActiveAttribute()' `attributes->GetActiveComponent()'). Contouring interpolates the `attributes->GetNumberOfattributesToInterpolate()' attributes `attributes->GetAttributesToInterpolate()'. The `locator', `verts', `lines', `polys', `outPd' and `outCd' are cumulative data arrays over cell iterations: they store the result of each call to Contour(): - `locator' is a points list that merges points as they are inserted (i.e., prevents duplicates). - `verts' is an array of generated vertices - `lines' is an array of generated lines - `polys' is an array of generated polygons - `outPd' is an array of interpolated point data along the edge (if not-NULL) - `outCd' is an array of copied cell data of the current cell (if not-NULL) `internalPd', `secondaryPd' and `secondaryCd' are initialized by the filter that call it from `attributes'. - `internalPd' stores the result of the tessellation pass: the higher-order cell is tessellated into linear sub-cells. - `secondaryPd' and `secondaryCd' are used internally as inputs to the Contour() method on linear sub-cells. Note: the CopyAllocate() method must be invoked on both `outPd' and `outCd', from `secondaryPd' and `secondaryCd'. NOTE: `vtkGenericAttributeCollection *attributes' will be replaced by a `vtkInformation'.

Precondition:
values_exist: (values!=0 && f==0) || (values==0 && f!=0)

attributes_exist: attributes!=0

tessellator_exists: tess!=0

locator_exists: locator!=0

verts_exist: verts!=0

lines_exist: lines!=0

polys_exist: polys!=0

internalPd_exists: internalPd!=0

secondaryPd_exists: secondaryPd!=0

secondaryCd_exists: secondaryCd!=0

virtual void vtkGenericAdaptorCell::Clip ( double  value,
vtkImplicitFunction f,
vtkGenericAttributeCollection attributes,
vtkGenericCellTessellator tess,
int  insideOut,
vtkPointLocator locator,
vtkCellArray connectivity,
vtkPointData outPd,
vtkCellData outCd,
vtkPointData internalPd,
vtkPointData secondaryPd,
vtkCellData secondaryCd 
) [virtual]

Cut (or clip) the current cell with respect to the contour defined by the `value' or the implicit function `f' of the scalar attribute (`attributes->GetActiveAttribute()',`attributes->GetActiveComponent() '). If `f' exists, `value' is not used. The output is the part of the current cell which is inside the contour. The output is a set of zero, one or more cells of the same topological dimension as the current cell. Normally, cell points whose scalar value is greater than "value" are considered inside. If `insideOut' is on, this is reversed. Clipping interpolates the `attributes->GetNumberOfattributesToInterpolate()' attributes `attributes->GetAttributesToInterpolate()'. `locator', `connectivity', `outPd' and `outCd' are cumulative data arrays over cell iterations: they store the result of each call to Clip(): - `locator' is a points list that merges points as they are inserted (i.e., prevents duplicates). - `connectivity' is an array of generated cells - `outPd' is an array of interpolated point data along the edge (if not-NULL) - `outCd' is an array of copied cell data of the current cell (if not-NULL) `internalPd', `secondaryPd' and `secondaryCd' are initialized by the filter that call it from `attributes'. - `internalPd' stores the result of the tessellation pass: the higher-order cell is tessellated into linear sub-cells. - `secondaryPd' and `secondaryCd' are used internally as inputs to the Clip() method on linear sub-cells. Note: the CopyAllocate() method must be invoked on both `outPd' and `outCd', from `secondaryPd' and `secondaryCd'. NOTE: `vtkGenericAttributeCollection *attributes' will be replaced by a `vtkInformation'.

Precondition:
attributes_exist: attributes!=0

tessellator_exists: tess!=0

locator_exists: locator!=0

connectivity_exists: connectivity!=0

internalPd_exists: internalPd!=0

secondaryPd_exists: secondaryPd!=0

secondaryCd_exists: secondaryCd!=0

virtual int vtkGenericAdaptorCell::IntersectWithLine ( double  p1[3],
double  p2[3],
double  tol,
double &  t,
double  x[3],
double  pcoords[3],
int &  subId 
) [pure virtual]

Is there an intersection between the current cell and the ray (`p1',`p2') according to a tolerance `tol'? If true, `x' is the global intersection, `t' is the parametric coordinate for the line, `pcoords' are the parametric coordinates for cell. `subId' is the sub-cell where the intersection occurs.

Precondition:
positive_tolerance: tol>0

Implemented in vtkBridgeCell.

virtual void vtkGenericAdaptorCell::Derivatives ( int  subId,
double  pcoords[3],
vtkGenericAttribute attribute,
double *  derivs 
) [pure virtual]

Compute derivatives `derivs' of the attribute `attribute' (from its values at the corner points of the cell) given sub-cell `subId' (0 means primary cell) and parametric coordinates `pcoords'. Derivatives are in the x-y-z coordinate directions for each data value.

Precondition:
positive_subId: subId>=0

clamped_pcoords: (0<=pcoords[0])&&(pcoords[0]<=1)&&(0<=pcoords[1]) &&(pcoords[1]<=1)&&(0<=pcoords[2])%%(pcoords[2]<=1)

attribute_exists: attribute!=0

derivs_exists: derivs!=0

valid_size: sizeof(derivs)>=attribute->GetNumberOfComponents()*3

Implemented in vtkBridgeCell.

virtual void vtkGenericAdaptorCell::GetBounds ( double  bounds[6]  )  [pure virtual]

Compute the bounding box of the current cell in `bounds' in global coordinates. THREAD SAFE

Implemented in vtkBridgeCell.

virtual double* vtkGenericAdaptorCell::GetBounds (  )  [virtual]

Return the bounding box of the current cell in global coordinates. NOT THREAD SAFE

Postcondition:
result_exists: result!=0

valid_size: sizeof(result)>=6

Reimplemented in vtkBridgeCell.

virtual double vtkGenericAdaptorCell::GetLength2 (  )  [virtual]

Return the bounding box diagonal squared of the current cell.

Postcondition:
positive_result: result>=0

Reimplemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::GetParametricCenter ( double  pcoords[3]  )  [pure virtual]

Get the center of the current cell (in parametric coordinates) and place it in `pcoords'. If the current cell is a composite, the return value is the sub-cell id that the center is in.

Postcondition:
valid_result: (result>=0) && (IsPrimary() implies result==0)

Implemented in vtkBridgeCell.

virtual double vtkGenericAdaptorCell::GetParametricDistance ( double  pcoords[3]  )  [pure virtual]

Return the distance of the parametric coordinate `pcoords' to the current cell. If inside the cell, a distance of zero is returned. This is used during picking to get the correct cell picked. (The tolerance will occasionally allow cells to be picked who are not really intersected "inside" the cell.)

Postcondition:
positive_result: result>=0

Implemented in vtkBridgeCell.

virtual double* vtkGenericAdaptorCell::GetParametricCoords (  )  [pure virtual]

Return a contiguous array of parametric coordinates of the corrner points defining the current cell. In other words, (px,py,pz, px,py,pz, etc..) The coordinates are ordered consistent with the definition of the point ordering for the cell. Note that 3D parametric coordinates are returned no matter what the topological dimension of the cell.

Postcondition:
valid_result_exists: ((IsPrimary()) && (result!=0)) || ((!IsPrimary()) && (result==0)) result!=0 implies sizeof(result)==GetNumberOfPoints()

Implemented in vtkBridgeCell.

virtual void vtkGenericAdaptorCell::Tessellate ( vtkGenericAttributeCollection attributes,
vtkGenericCellTessellator tess,
vtkPoints points,
vtkPointLocator locator,
vtkCellArray cellArray,
vtkPointData internalPd,
vtkPointData pd,
vtkCellData cd,
vtkUnsignedCharArray types 
) [virtual]

Tessellate the cell if it is not linear or if at least one attribute of `attributes' is not linear. The output are linear cells of the same dimension than the cell. If the cell is linear and all attributes are linear, the output is just a copy of the current cell. `points', `cellArray', `pd' and `cd' are cumulative output data arrays over cell iterations: they store the result of each call to Tessellate(). `internalPd' is initialized by the calling filter and stores the result of the tessellation. If it is not null, `types' is filled with the types of the linear cells. `types' is null when it is called from vtkGenericGeometryFilter and not null when it is called from vtkGenericDatasetTessellator.

Precondition:
attributes_exist: attributes!=0

tessellator_exists: tess!=0

points_exist: points!=0

cellArray_exists: cellArray!=0

internalPd_exists: internalPd!=0

pd_exist: pd!=0

cd_exists: cd!=0

virtual int vtkGenericAdaptorCell::IsFaceOnBoundary ( vtkIdType  faceId  )  [pure virtual]

Is the face `faceId' of the current cell on the exterior boundary of the dataset?

Precondition:
3d: GetDimension()==3

Implemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::IsOnBoundary (  )  [pure virtual]

Is the cell on the exterior boundary of the dataset?

Precondition:
2d: GetDimension()==2

Implemented in vtkBridgeCell.

virtual void vtkGenericAdaptorCell::GetPointIds ( vtkIdType id  )  [pure virtual]

Put into `id' the list of the dataset points that define the corner points of the cell.

Precondition:
id_exists: id!=0

valid_size: sizeof(id)==GetNumberOfPoints();

Implemented in vtkBridgeCell.

virtual void vtkGenericAdaptorCell::TriangulateFace ( vtkGenericAttributeCollection attributes,
vtkGenericCellTessellator tess,
int  index,
vtkPoints points,
vtkPointLocator locator,
vtkCellArray cellArray,
vtkPointData internalPd,
vtkPointData pd,
vtkCellData cd 
) [virtual]

Tessellate face `index' of the cell. See Tessellate() for further explanations.

Precondition:
cell_is_3d: GetDimension()==3

attributes_exist: attributes!=0

tessellator_exists: tess!=0

valid_face: index>=0

points_exist: points!=0

cellArray_exists: cellArray!=0

internalPd_exists: internalPd!=0

pd_exist: pd!=0

cd_exists: cd!=0

virtual int* vtkGenericAdaptorCell::GetFaceArray ( int  faceId  )  [pure virtual]

Return the ids of the vertices defining face `faceId'. Ids are related to the cell, not to the dataset.

Precondition:
is_3d: this->GetDimension()==3

valid_faceId_range: faceId>=0 && faceId<this->GetNumberOfBoundaries(2)

Postcondition:
result_exists: result!=0

valid_size: sizeof(result)>=GetNumberOfVerticesOnFace(faceId)

Implemented in vtkBridgeCell.

virtual int vtkGenericAdaptorCell::GetNumberOfVerticesOnFace ( int  faceId  )  [pure virtual]

Return the number of vertices defining face `faceId'.

Precondition:
is_3d: this->GetDimension()==3

valid_faceId_range: faceId>=0 && faceId<this->GetNumberOfBoundaries(2)

Postcondition:
positive_result: && result>0

Implemented in vtkBridgeCell.

virtual int* vtkGenericAdaptorCell::GetEdgeArray ( int  edgeId  )  [pure virtual]

Return the ids of the vertices defining edge `edgeId'. Ids are related to the cell, not to the dataset.

Precondition:
valid_dimension: this->GetDimension()>=2

valid_edgeId_range: edgeId>=0 && edgeId<this->GetNumberOfBoundaries(1)

Postcondition:
result_exists: result!=0

valid_size: sizeof(result)==2

Implemented in vtkBridgeCell.

void vtkGenericAdaptorCell::Reset (  )  [protected]

Reset internal structures.

void vtkGenericAdaptorCell::AllocateTuples ( int  size  )  [protected]

Allocate some memory if Tuples does not exist or is smaller than size.

Precondition:
positive_size: size>0


Member Data Documentation

Definition at line 510 of file vtkGenericAdaptorCell.h.

Definition at line 511 of file vtkGenericAdaptorCell.h.

Definition at line 512 of file vtkGenericAdaptorCell.h.

Definition at line 513 of file vtkGenericAdaptorCell.h.

Definition at line 514 of file vtkGenericAdaptorCell.h.

Definition at line 515 of file vtkGenericAdaptorCell.h.

Definition at line 516 of file vtkGenericAdaptorCell.h.

Definition at line 517 of file vtkGenericAdaptorCell.h.

Definition at line 524 of file vtkGenericAdaptorCell.h.

Definition at line 525 of file vtkGenericAdaptorCell.h.

Definition at line 526 of file vtkGenericAdaptorCell.h.

Definition at line 527 of file vtkGenericAdaptorCell.h.

Definition at line 529 of file vtkGenericAdaptorCell.h.

Definition at line 532 of file vtkGenericAdaptorCell.h.

Definition at line 533 of file vtkGenericAdaptorCell.h.

Definition at line 534 of file vtkGenericAdaptorCell.h.

double* vtkGenericAdaptorCell::Tuples [protected]

Definition at line 538 of file vtkGenericAdaptorCell.h.

Definition at line 539 of file vtkGenericAdaptorCell.h.

double vtkGenericAdaptorCell::Bounds[6] [protected]

Definition at line 542 of file vtkGenericAdaptorCell.h.


The documentation for this class was generated from the following file:

Generated on Wed Jun 3 19:03:53 2009 for VTK by  doxygen 1.5.6