VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkParametricSpline.h,v $ 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00040 #ifndef __vtkParametricSpline_h 00041 #define __vtkParametricSpline_h 00042 00043 class vtkSpline; 00044 class vtkPoints; 00045 00046 #include "vtkParametricFunction.h" 00047 00048 class VTK_FILTERING_EXPORT vtkParametricSpline : public vtkParametricFunction 00049 { 00050 public: 00051 vtkTypeRevisionMacro(vtkParametricSpline,vtkParametricFunction); 00052 void PrintSelf(ostream& os, vtkIndent indent); 00053 00058 static vtkParametricSpline *New(); 00059 00061 virtual int GetDimension() {return 1;} 00062 00065 virtual void Evaluate(double u[3], double Pt[3], double Du[9]); 00066 00069 virtual double EvaluateScalar(double u[3], double Pt[3], double Du[9]); 00070 00072 00075 void SetXSpline(vtkSpline*); 00076 void SetYSpline(vtkSpline*); 00077 void SetZSpline(vtkSpline*); 00078 vtkGetObjectMacro(XSpline,vtkSpline); 00079 vtkGetObjectMacro(YSpline,vtkSpline); 00080 vtkGetObjectMacro(ZSpline,vtkSpline); 00082 00084 00087 void SetPoints(vtkPoints*); 00088 vtkGetObjectMacro(Points,vtkPoints); 00090 00092 00095 vtkSetMacro(Closed,int); 00096 vtkGetMacro(Closed,int); 00097 vtkBooleanMacro(Closed,int); 00099 00101 00103 vtkSetMacro(ParameterizeByLength,int); 00104 vtkGetMacro(ParameterizeByLength,int); 00105 vtkBooleanMacro(ParameterizeByLength,int); 00107 00109 00117 vtkSetClampMacro(LeftConstraint,int,0,3); 00118 vtkGetMacro(LeftConstraint,int); 00119 vtkSetClampMacro(RightConstraint,int,0,3); 00120 vtkGetMacro(RightConstraint,int); 00122 00124 00126 vtkSetMacro(LeftValue,double); 00127 vtkGetMacro(LeftValue,double); 00128 vtkSetMacro(RightValue,double); 00129 vtkGetMacro(RightValue,double); 00131 00132 protected: 00133 vtkParametricSpline(); 00134 ~vtkParametricSpline(); 00135 00136 // Points definition 00137 vtkPoints *Points; 00138 00139 // The interpolating splines for each of the x-y-z coordinates 00140 vtkSpline *XSpline; 00141 vtkSpline *YSpline; 00142 vtkSpline *ZSpline; 00143 00144 // Supplemental variables 00145 int Closed; 00146 int LeftConstraint; 00147 int RightConstraint; 00148 double LeftValue; 00149 double RightValue; 00150 int ParameterizeByLength; 00151 00152 // Initializing the spline 00153 unsigned long InitializeTime; 00154 int Initialize(); 00155 00156 // Internal variable for managing parametric coordinates 00157 double Length; 00158 double ClosedLength; 00159 00160 private: 00161 vtkParametricSpline(const vtkParametricSpline&); // Not implemented. 00162 void operator=(const vtkParametricSpline&); // Not implemented. 00163 }; 00164 00165 #endif