VTK
dox/Filtering/vtkParametricSpline.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkParametricSpline.h
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 =========================================================================*/
00043 #ifndef __vtkParametricSpline_h
00044 #define __vtkParametricSpline_h
00045 
00046 class vtkSpline;
00047 class vtkPoints;
00048 
00049 #include "vtkParametricFunction.h"
00050 
00051 class VTK_FILTERING_EXPORT vtkParametricSpline : public vtkParametricFunction
00052 {
00053 public:
00054   vtkTypeMacro(vtkParametricSpline,vtkParametricFunction);
00055   void PrintSelf(ostream& os, vtkIndent indent);
00056   
00061   static vtkParametricSpline *New();
00062 
00064   virtual int GetDimension() {return 1;}
00065 
00068   virtual void Evaluate(double u[3], double Pt[3], double Du[9]);
00069 
00072   virtual double EvaluateScalar(double u[3], double Pt[3], double Du[9]);
00073 
00075 
00078   void SetXSpline(vtkSpline*);
00079   void SetYSpline(vtkSpline*);
00080   void SetZSpline(vtkSpline*);
00081   vtkGetObjectMacro(XSpline,vtkSpline);
00082   vtkGetObjectMacro(YSpline,vtkSpline);
00083   vtkGetObjectMacro(ZSpline,vtkSpline);
00085 
00087 
00090   void SetPoints(vtkPoints*);
00091   vtkGetObjectMacro(Points,vtkPoints);
00093 
00095 
00097   void SetNumberOfPoints(vtkIdType numPts);
00098   void SetPoint(vtkIdType index, double x, double y, double z);
00100 
00102 
00105   vtkSetMacro(Closed,int);
00106   vtkGetMacro(Closed,int);
00107   vtkBooleanMacro(Closed,int);
00109 
00111 
00113   vtkSetMacro(ParameterizeByLength,int);
00114   vtkGetMacro(ParameterizeByLength,int);
00115   vtkBooleanMacro(ParameterizeByLength,int);   
00117 
00119 
00127   vtkSetClampMacro(LeftConstraint,int,0,3);
00128   vtkGetMacro(LeftConstraint,int);
00129   vtkSetClampMacro(RightConstraint,int,0,3);
00130   vtkGetMacro(RightConstraint,int);
00132 
00134 
00136   vtkSetMacro(LeftValue,double);
00137   vtkGetMacro(LeftValue,double);
00138   vtkSetMacro(RightValue,double);
00139   vtkGetMacro(RightValue,double);
00141 
00142 protected:
00143   vtkParametricSpline();
00144   ~vtkParametricSpline();
00145 
00146   // Points definition
00147   vtkPoints *Points;
00148 
00149   // The interpolating splines for each of the x-y-z coordinates
00150   vtkSpline *XSpline;
00151   vtkSpline *YSpline;
00152   vtkSpline *ZSpline;
00153 
00154   // Supplemental variables
00155   int    Closed;
00156   int    LeftConstraint;
00157   int    RightConstraint;
00158   double LeftValue;
00159   double RightValue;
00160   int    ParameterizeByLength;
00161 
00162   // Initializing the spline
00163   unsigned long InitializeTime;
00164   int Initialize();
00165   
00166   // Internal variable for managing parametric coordinates
00167   double Length;
00168   double ClosedLength;
00169   
00170 private:
00171   vtkParametricSpline(const vtkParametricSpline&);  // Not implemented.
00172   void operator=(const vtkParametricSpline&);  // Not implemented.
00173 };
00174 
00175 #endif