BezierTri.h
1 /******************************************************************************
2 
3  (c) 2004-2014 Scientific Computation Research Center,
4  Rensselaer Polytechnic Institute. All rights reserved.
5 
6  The LICENSE-SCOREC file included with this distribution describes the terms
7  of the SCOREC Non-Commercial License this program is distributed under.
8 
9 *******************************************************************************/
10 #ifndef BEZIERTRI_H
11 #define BEZIERTRI_H
12 
13 #include <iostream>
14 #include <vector>
15 #include <string>
16 #include "ParametricFace.h"
17 
21 class BezierTri : public ParametricFace {
22  public:
25  BezierTri(std::vector<Point3d> in_ordered_nodes);
26 
29  virtual ~BezierTri()
30  {
31  }
32 
33  protected:
34  virtual void v_eval(Point2d in_xi, Point3d & out_xyz) = 0;
35  virtual void v_deriv1(Point2d in_xi,
36  Point3d & out_dxyz_dxi1,
37  Point3d & out_dxyz_dxi2) = 0;
38  virtual int v_order(void) = 0;
39 };
40 
43 class BezierTri2 : public BezierTri {
44  public:
47  BezierTri2(std::vector<Point3d> in_ordered_nodes);
48 
51  virtual ~BezierTri2();
52 
53  protected:
56  virtual void v_eval(Point2d in_xi, Point3d & out_xyz);
57 
60  virtual void v_deriv1(Point2d in_xi,
61  Point3d & out_dxyz_dxi1,
62  Point3d & out_dxyz_dxi2);
63 
66  virtual int v_order(void);
67 };
68 
71 class BezierTri3 : public BezierTri {
72  public:
75  BezierTri3(std::vector<Point3d> in_ordered_nodes);
76 
79  virtual ~BezierTri3();
80 
81  protected:
84  virtual void v_eval(Point2d in_xi, Point3d & out_xyz);
85 
88  virtual void v_deriv1(Point2d in_xi,
89  Point3d & out_dxyz_dxi1,
90  Point3d & out_dxyz_dxi2);
91 
94  virtual int v_order(void);
95 };
96 
99 class BezierTri4 : public BezierTri {
100  public:
103  BezierTri4(std::vector<Point3d> in_ordered_nodes);
104 
107  virtual ~BezierTri4();
108 
109  protected:
112  virtual void v_eval(Point2d in_xi, Point3d & out_xyz);
113 
116  virtual void v_deriv1(Point2d in_xi,
117  Point3d & out_dxyz_dxi1,
118  Point3d & out_dxyz_dxi2);
119 
122  virtual int v_order(void);
123 };
124 
127 class BezierTri5 : public BezierTri {
128  public:
131  BezierTri5(std::vector<Point3d> in_ordered_nodes);
132 
135  virtual ~BezierTri5();
136 
137  protected:
140  virtual void v_eval(Point2d in_xi, Point3d & out_xyz);
141 
144  virtual void v_deriv1(Point2d in_xi,
145  Point3d & out_dxyz_dxi1,
146  Point3d & out_dxyz_dxi2);
147 
150  virtual int v_order(void);
151 };
152 
153 #endif //BEZIERTRI_H
virtual void v_eval(Point2d in_xi, Point3d &out_xyz)
evaluation of 4th order bezier face w.r.t. barycentric coords
Definition: BezierTri.cc:258
virtual int v_order(void)
return the geometry order
Definition: BezierTri.cc:146
virtual void v_eval(Point2d in_xi, Point3d &out_xyz)
evaluation of 4th order bezier face w.r.t. barycentric coords
Definition: BezierTri.cc:162
BezierTri2(std::vector< Point3d > in_ordered_nodes)
ctor
Definition: BezierTri.cc:22
interface class for all parametric faces
Definition: ParametricFace.h:16
BezierTri4(std::vector< Point3d > in_ordered_nodes)
ctor
Definition: BezierTri.cc:153
virtual void v_deriv1(Point2d in_xi, Point3d &out_dxyz_dxi1, Point3d &out_dxyz_dxi2)
evaluate first derivatives w.r.t. barycentric coords
Definition: BezierTri.cc:106
BezierTri(std::vector< Point3d > in_ordered_nodes)
ctor
Definition: BezierTri.cc:15
virtual ~BezierTri4()
destructor
Definition: BezierTri.cc:158
virtual ~BezierTri5()
destructor
Definition: BezierTri.cc:254
BezierTri5(std::vector< Point3d > in_ordered_nodes)
ctor
Definition: BezierTri.cc:249
virtual int v_order(void)
return the geometry order
Definition: BezierTri.cc:357
virtual void v_deriv1(Point2d in_xi, Point3d &out_dxyz_dxi1, Point3d &out_dxyz_dxi2)
evaluate first derivatives w.r.t. barycentric coords
Definition: BezierTri.cc:293
concrete class for triangular bezier face of order 3
Definition: BezierTri.h:71
virtual ~BezierTri()
destructor
Definition: BezierTri.h:29
virtual int v_order(void)
return the geometry order
Definition: BezierTri.cc:242
virtual void v_deriv1(Point2d in_xi, Point3d &out_dxyz_dxi1, Point3d &out_dxyz_dxi2)
evaluate first derivatives w.r.t. barycentric coords
Definition: BezierTri.cc:190
abstract base class for triangular bezier patches
Definition: BezierTri.h:21
virtual void v_eval(Point2d in_xi, Point3d &out_xyz)
evaluation of 3rd order bezier face w.r.t. barycentric coords
Definition: BezierTri.cc:85
virtual int v_order(void)
return the geometry order
Definition: BezierTri.cc:69
BezierTri3(std::vector< Point3d > in_ordered_nodes)
ctor
Definition: BezierTri.cc:76
virtual void v_eval(Point2d in_xi, Point3d &out_xyz)
evaluation of 2nd order bezier face w.r.t. barycentric coords
Definition: BezierTri.cc:31
virtual ~BezierTri3()
destructor
Definition: BezierTri.cc:81
concrete class for triangular bezier face of order 4
Definition: BezierTri.h:99
concrete class for triangular bezier face of order 2
Definition: BezierTri.h:43
virtual void v_deriv1(Point2d in_xi, Point3d &out_dxyz_dxi1, Point3d &out_dxyz_dxi2)
evaluate first derivatives w.r.t. barycentric coords
Definition: BezierTri.cc:46
concrete class for triangular bezier face of order 5
Definition: BezierTri.h:127
virtual ~BezierTri2()
destructor
Definition: BezierTri.cc:27