vtkParametricEllipsoid.h 4.03 KB
 Andrew Maclean committed Feb 10, 2005 1 2 3 4 5 /*========================================================================= Program: Visualization Toolkit Module: vtkParametricEllipsoid.h  VTK Developers committed Apr 09, 2012 6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen  Andrew Maclean committed Feb 10, 2005 7 8 9  All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details.  VTK Developers committed Apr 09, 2012 10 11  This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR  Andrew Maclean committed Feb 10, 2005 12 13 14  PURPOSE. See the above copyright notice for more information. =========================================================================*/  David DeMarle committed Sep 23, 2016 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 /** * @class vtkParametricEllipsoid * @brief Generate an ellipsoid. * * vtkParametricEllipsoid generates an ellipsoid. * If all the radii are the same, we have a sphere. * An oblate spheroid occurs if RadiusX = RadiusY > RadiusZ. * Here the Z-axis forms the symmetry axis. To a first * approximation, this is the shape of the earth. * A prolate spheroid occurs if RadiusX = RadiusY < RadiusZ. * * For further information about this surface, please consult the * technical description "Parametric surfaces" in http://www.vtk.org/publications * in the "VTK Technical Documents" section in the VTk.org web pages. * * @par Thanks: * Andrew Maclean andrew.amaclean@gmail.com for creating and contributing the * class. * */  Sean McBride committed Dec 18, 2014 36 37 #ifndef vtkParametricEllipsoid_h #define vtkParametricEllipsoid_h  Andrew Maclean committed Feb 10, 2005 38   VTK Developers committed Apr 09, 2012 39 #include "vtkCommonComputationalGeometryModule.h" // For export macro  Andrew Maclean committed Feb 10, 2005 40 41 #include "vtkParametricFunction.h"  Andrew Maclean committed Oct 11, 2016 42 43 class VTKCOMMONCOMPUTATIONALGEOMETRY_EXPORT vtkParametricEllipsoid : public vtkParametricFunction  Andrew Maclean committed Feb 10, 2005 44 {  Andrew Maclean committed Oct 11, 2016 45 46  public: vtkTypeMacro(vtkParametricEllipsoid, vtkParametricFunction);  Kitware Robot committed Oct 02, 2017 47  void PrintSelf(ostream& os, vtkIndent indent) override;  Andrew Maclean committed Oct 11, 2016 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64  /** * Construct an ellipsoid with the following parameters: * MinimumU = 0, MaximumU = 2*Pi, * MinimumV = 0, MaximumV = Pi, * JoinU = 1, JoinV = 0, * TwistU = 0, TwistV = 0, * ClockwiseOrdering = 0, * DerivativesAvailable = 1, * XRadius = 1, YRadius = 1, * ZRadius = 1, a sphere in this case. */ static vtkParametricEllipsoid *New(); /** * Return the parametric dimension of the class. */  Kitware Robot committed Oct 02, 2017 65  int GetDimension() override {return 2;}  Andrew Maclean committed Oct 11, 2016 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98  //@{ /** * Set/Get the scaling factor for the x-axis. Default is 1. */ vtkSetMacro(XRadius, double); vtkGetMacro(XRadius, double); //@} //@{ /** * Set/Get the scaling factor for the y-axis. Default is 1. */ vtkSetMacro(YRadius, double); vtkGetMacro(YRadius, double); //@} //@{ /** * Set/Get the scaling factor for the z-axis. Default is 1. */ vtkSetMacro(ZRadius, double); vtkGetMacro(ZRadius, double); //@} /** * An ellipsoid. * This function performs the mapping \f$f(u,v) \rightarrow (x,y,x)\f$, returning it * as Pt. It also returns the partial derivatives Du and Dv. * \f$Pt = (x, y, z), Du = (dx/du, dy/du, dz/du), Dv = (dx/dv, dy/dv, dz/dv)\f$ . * Then the normal is \f$N = Du X Dv\f$ . */  Kitware Robot committed Oct 02, 2017 99  void Evaluate(double uvw[3], double Pt[3], double Duvw[9]) override;  Andrew Maclean committed Oct 11, 2016 100 101 102 103  /** * Calculate a user defined scalar using one or all of uvw, Pt, Duvw.  luz.paz committed Dec 27, 2017 104  * uvw are the parameters with Pt being the cartesian point,  Andrew Maclean committed Oct 11, 2016 105 106 107 108 109 110 111 112 113 114  * Duvw are the derivatives of this point with respect to u, v and w. * Pt, Duvw are obtained from Evaluate(). * This function is only called if the ScalarMode has the value * vtkParametricFunctionSource::SCALAR_FUNCTION_DEFINED * If the user does not need to calculate a scalar, then the * instantiated function should return zero. */ double EvaluateScalar(double uvw[3], double Pt[3],  Kitware Robot committed Oct 02, 2017 115  double Duvw[9]) override;  Andrew Maclean committed Oct 11, 2016 116 117 118  protected: vtkParametricEllipsoid();  Kitware Robot committed Oct 02, 2017 119  ~vtkParametricEllipsoid() override;  Andrew Maclean committed Oct 11, 2016 120 121 122 123 124 125 126 127 128  // Variables double XRadius; double YRadius; double ZRadius; double N1; double N2; private:  Kitware Robot committed Oct 04, 2017 129 130  vtkParametricEllipsoid(const vtkParametricEllipsoid&) = delete; void operator=(const vtkParametricEllipsoid&) = delete;  Andrew Maclean committed Feb 10, 2005 131 132 133 134  }; #endif