1 /*=========================================================================
2 
3   Program:   Visualization Toolkit
4   Module:    vtkParametricEnneper.cxx
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 =========================================================================*/
15 #include "vtkParametricEnneper.h"
16 #include "vtkObjectFactory.h"
17 #include "vtkMath.h"
18 
19 vtkStandardNewMacro(vtkParametricEnneper);
20 
21 //----------------------------------------------------------------------------
vtkParametricEnneper()22 vtkParametricEnneper::vtkParametricEnneper()
23 {
24   // Preset triangulation parameters
25   this->MinimumU = -2.0;
26   this->MaximumU = 2.0;
27   this->MinimumV = -2.0;
28   this->MaximumV = 2.0;
29 
30   this->JoinU = 0;
31   this->JoinV = 0;
32   this->TwistU = 0;
33   this->TwistV = 0;
34   this->ClockwiseOrdering = 0;
35   this->DerivativesAvailable = 1;
36 
37 }
38 
39 //----------------------------------------------------------------------------
40 vtkParametricEnneper::~vtkParametricEnneper() = default;
41 
42 //----------------------------------------------------------------------------
Evaluate(double uvw[3],double Pt[3],double Duvw[9])43 void vtkParametricEnneper::Evaluate(double uvw[3], double Pt[3],
44                                     double Duvw[9])
45 {
46 
47   double u = uvw[0];
48   double v = uvw[1];
49   double *Du = Duvw;
50   double *Dv = Duvw + 3;
51 
52   // The point
53   Pt[0] = u - u * u * u / 3 + u * v * v;
54   Pt[1] = v - v * v * v / 3 + u * u * v;
55   Pt[2] = u * u - v * v;
56 
57   //The derivatives are:
58   Du[0] = 1 - u * u + v * v;
59   Dv[0] = 2 * u * v;
60   Du[1] = 2 * u * v;
61   Dv[1] = 1 - v * v + u * u;
62   Du[2] = 2 * u;
63   Dv[2] = -2 * v;
64 }
65 
66 //----------------------------------------------------------------------------
EvaluateScalar(double *,double *,double *)67 double vtkParametricEnneper::EvaluateScalar(double *, double *,
68     double *)
69 {
70   return 0;
71 }
72 
73 //----------------------------------------------------------------------------
PrintSelf(ostream & os,vtkIndent indent)74 void vtkParametricEnneper::PrintSelf(ostream& os, vtkIndent indent)
75 {
76   this->Superclass::PrintSelf(os, indent);
77 }
78