Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Common/vtkQuadraticHexahedron.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkQuadraticHexahedron.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00040 #ifndef __vtkQuadraticHexahedron_h 00041 #define __vtkQuadraticHexahedron_h 00042 00043 #include "vtkNonLinearCell.h" 00044 00045 class vtkPolyData; 00046 class vtkQuadraticEdge; 00047 class vtkQuadraticQuad; 00048 class vtkHexahedron; 00049 00050 class VTK_COMMON_EXPORT vtkQuadraticHexahedron : public vtkNonLinearCell 00051 { 00052 public: 00053 static vtkQuadraticHexahedron *New(); 00054 vtkTypeRevisionMacro(vtkQuadraticHexahedron,vtkNonLinearCell); 00055 00057 00059 int GetCellType() {return VTK_QUADRATIC_HEXAHEDRON;} 00060 int GetCellDimension() {return 3;} 00061 int GetNumberOfEdges() {return 12;} 00062 int GetNumberOfFaces() {return 6;} 00063 vtkCell *GetEdge(int); 00064 vtkCell *GetFace(int); 00066 00067 int CellBoundary(int subId, float pcoords[3], vtkIdList *pts); 00068 void Contour(float value, vtkDataArray *cellScalars, 00069 vtkPointLocator *locator, vtkCellArray *verts, 00070 vtkCellArray *lines, vtkCellArray *polys, 00071 vtkPointData *inPd, vtkPointData *outPd, 00072 vtkCellData *inCd, vtkIdType cellId, vtkCellData *outCd); 00073 int EvaluatePosition(float x[3], float* closestPoint, 00074 int& subId, float pcoords[3], 00075 float& dist2, float *weights); 00076 void EvaluateLocation(int& subId, float pcoords[3], float x[3], 00077 float *weights); 00078 int Triangulate(int index, vtkIdList *ptIds, vtkPoints *pts); 00079 void Derivatives(int subId, float pcoords[3], float *values, 00080 int dim, float *derivs); 00081 00083 00086 void Clip(float value, vtkDataArray *cellScalars, 00087 vtkPointLocator *locator, vtkCellArray *tetras, 00088 vtkPointData *inPd, vtkPointData *outPd, 00089 vtkCellData *inCd, vtkIdType cellId, vtkCellData *outCd, 00090 int insideOut); 00092 00094 00096 int IntersectWithLine(float p1[3], float p2[3], float tol, float& t, 00097 float x[3], float pcoords[3], int& subId); 00099 00100 00102 00103 static void InterpolationFunctions(float pcoords[3], float weights[3]); 00104 static void InterpolationDerivs(float pcoords[3], float derivs[3]); 00106 00110 void JacobianInverse(float pcoords[3], double **inverse, float derivs[60]); 00111 00112 protected: 00113 vtkQuadraticHexahedron(); 00114 ~vtkQuadraticHexahedron(); 00115 00116 vtkQuadraticEdge *Edge; 00117 vtkQuadraticQuad *Face; 00118 vtkHexahedron *Hex; 00119 vtkPointData *PointData; 00120 vtkCellData *CellData; 00121 vtkFloatArray *Scalars; 00122 00123 void Subdivide(vtkPointData *inPd, vtkCellData *inCd, vtkIdType cellId); 00124 00125 private: 00126 vtkQuadraticHexahedron(const vtkQuadraticHexahedron&); // Not implemented. 00127 void operator=(const vtkQuadraticHexahedron&); // Not implemented. 00128 }; 00129 00130 #endif 00131 00132