00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00052 #ifndef __vtkLine_h
00053 #define __vtkLine_h
00054
00055 #include "vtkCell.h"
00056
00057 class VTK_EXPORT vtkLine : public vtkCell
00058 {
00059 public:
00060 static vtkLine *New();
00061 vtkTypeMacro(vtkLine,vtkCell);
00062
00064 vtkCell *MakeObject();
00065 int GetCellType() {return VTK_LINE;};
00066 int GetCellDimension() {return 1;};
00067 int GetNumberOfEdges() {return 0;};
00068 int GetNumberOfFaces() {return 0;};
00069 vtkCell *GetEdge(int) {return 0;};
00070 vtkCell *GetFace(int) {return 0;};
00071 int CellBoundary(int subId, float pcoords[3], vtkIdList *pts);
00072 void Contour(float value, vtkScalars *cellScalars,
00073 vtkPointLocator *locator, vtkCellArray *verts,
00074 vtkCellArray *lines, vtkCellArray *polys,
00075 vtkPointData *inPd, vtkPointData *outPd,
00076 vtkCellData *inCd, int cellId, vtkCellData *outCd);
00077 int EvaluatePosition(float x[3], float* closestPoint,
00078 int& subId, float pcoords[3],
00079 float& dist2, float *weights);
00080 void EvaluateLocation(int& subId, float pcoords[3], float x[3],
00081 float *weights);
00082 int Triangulate(int index, vtkIdList *ptIds, vtkPoints *pts);
00083 void Derivatives(int subId, float pcoords[3], float *values,
00084 int dim, float *derivs);
00085
00088 void Clip(float value, vtkScalars *cellScalars,
00089 vtkPointLocator *locator, vtkCellArray *lines,
00090 vtkPointData *inPd, vtkPointData *outPd,
00091 vtkCellData *inCd, int cellId, vtkCellData *outCd, int insideOut);
00092
00095 int IntersectWithLine(float p1[3], float p2[3], float tol, float& t,
00096 float x[3], float pcoords[3], int& subId);
00097
00098
00104 static int Intersection(float p1[3], float p2[3], float x1[3], float x2[3],
00105 float& u, float& v);
00106
00107
00110 static float DistanceToLine(float x[3], float p1[3], float p2[3],
00111 float &t, float closestPoint[3]);
00112
00113
00117 static float DistanceToLine(float x[3], float p1[3], float p2[3]);
00118
00120 static void InterpolationFunctions(float pcoords[3], float weights[2]);
00121
00122 #ifndef VTK_REMOVE_LEGACY_CODE
00123
00124 int CellBoundary(int subId, float pcoords[3], vtkIdList &pts)
00125 {VTK_LEGACY_METHOD(CellBoundary,"3.2");return this->CellBoundary(subId, pcoords, &pts);}
00126 int Triangulate(int index, vtkIdList &ptIds, vtkPoints &pts)
00127 {VTK_LEGACY_METHOD(Triangulate,"3.2");return this->Triangulate(index, &ptIds, &pts);}
00128 #endif
00129
00130 protected:
00131 vtkLine();
00132 ~vtkLine() {};
00133 vtkLine(const vtkLine&) {};
00134 void operator=(const vtkLine&) {};
00135
00136 };
00137
00138 #endif
00139
00140