VTK
vtkHexagonalPrism.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkHexagonalPrism.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
37 #ifndef __vtkHexagonalPrism_h
38 #define __vtkHexagonalPrism_h
39 
40 #include "vtkCell3D.h"
41 
42 class vtkLine;
43 class vtkPolygon;
44 class vtkQuad;
45 
46 class VTK_FILTERING_EXPORT vtkHexagonalPrism : public vtkCell3D
47 {
48 public:
49  static vtkHexagonalPrism *New();
50  vtkTypeMacro(vtkHexagonalPrism,vtkCell3D);
51  void PrintSelf(ostream& os, vtkIndent indent);
52 
54 
55  virtual void GetEdgePoints(int edgeId, int* &pts);
56  virtual void GetFacePoints(int faceId, int* &pts);
58 
60 
61  int GetCellType() {return VTK_HEXAGONAL_PRISM;};
62  int GetCellDimension() {return 3;};
63  int GetNumberOfEdges() {return 18;};
64  int GetNumberOfFaces() {return 8;};
65  vtkCell *GetEdge(int edgeId);
66  vtkCell *GetFace(int faceId);
67  int CellBoundary(int subId, double pcoords[3], vtkIdList *pts);
69 
70  int EvaluatePosition(double x[3], double* closestPoint,
71  int& subId, double pcoords[3],
72  double& dist2, double *weights);
73  void EvaluateLocation(int& subId, double pcoords[3], double x[3],
74  double *weights);
75  int IntersectWithLine(double p1[3], double p2[3], double tol, double& t,
76  double x[3], double pcoords[3], int& subId);
77  int Triangulate(int index, vtkIdList *ptIds, vtkPoints *pts);
78  void Derivatives(int subId, double pcoords[3], double *values,
79  int dim, double *derivs);
80  double *GetParametricCoords();
81 
83  int GetParametricCenter(double pcoords[3]);
84 
86 
88  static void InterpolationFunctions(double pcoords[3], double weights[12]);
89  // Description:
90  // @deprecated Replaced by vtkHexagonalPrism::InterpolateDerivs as of VTK 5.2
91  static void InterpolationDerivs(double pcoords[3], double derivs[36]);
92  // Description:
93  // Compute the interpolation functions/derivatives
94  // (aka shape functions/derivatives)
95  virtual void InterpolateFunctions(double pcoords[3], double weights[12])
96  {
98  }
99  virtual void InterpolateDerivs(double pcoords[3], double derivs[36])
100  {
102  }
104 
106 
108  static int *GetEdgeArray(int edgeId);
109  static int *GetFaceArray(int faceId);
111 
115  void JacobianInverse(double pcoords[3], double **inverse, double derivs[36]);
116 
117 protected:
120 
121  vtkLine *Line;
122  vtkQuad *Quad;
123  vtkPolygon *Polygon;
124 
125 private:
126  vtkHexagonalPrism(const vtkHexagonalPrism&); // Not implemented.
127  void operator=(const vtkHexagonalPrism&); // Not implemented.
128 };
129 
130 //----------------------------------------------------------------------------
131 inline int vtkHexagonalPrism::GetParametricCenter(double pcoords[3])
132 {
133  pcoords[0] = pcoords[1] = 0.5;
134  pcoords[2] = 0.5;
135  return 0;
136 }
137 #endif
138 
139 
static void InterpolationDerivs(double pcoords[3], double derivs[36])
static void InterpolationFunctions(double pcoords[3], double weights[12])
#define VTK_FILTERING_EXPORT
a 3D cell that represents a prism with hexagonal base
a simple class to control print indentation
Definition: vtkIndent.h:37
list of point or cell ids
Definition: vtkIdList.h:34
virtual void InterpolateFunctions(double pcoords[3], double weights[12])
int GetParametricCenter(double pcoords[3])
virtual void InterpolateDerivs(double pcoords[3], double derivs[36])
represent and manipulate 3D points
Definition: vtkPoints.h:38