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