Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/ElmerGUI/netgen/libsrc/csg/explicitcurve2d.hpp
3206 views
1
#ifndef FILE_EXPLICITCURVE2D
2
#define FILE_EXPLICITCURVE2D
3
4
/**************************************************************************/
5
/* File: explicitcurve2d.hh */
6
/* Author: Joachim Schoeberl */
7
/* Date: 14. Oct. 96 */
8
/**************************************************************************/
9
10
/*
11
12
Explicit 2D Curve repesentation
13
14
*/
15
16
17
18
///
19
class ExplicitCurve2d : public Curve2d
20
{
21
public:
22
///
23
ExplicitCurve2d ();
24
25
///
26
virtual void Project (Point<2> & p) const;
27
///
28
virtual double ProjectParam (const Point<2> & p) const = 0;
29
///
30
virtual double NumericalProjectParam (const Point<2> & p, double lb, double ub) const;
31
///
32
virtual double MinParam () const = 0;
33
///
34
virtual double MaxParam () const = 0;
35
///
36
virtual Point<2> Eval (double t) const = 0;
37
///
38
virtual Vec<2> EvalPrime (double t) const = 0;
39
///
40
virtual Vec<2> Normal (double t) const;
41
///
42
virtual void NormalVector (const Point<2> & p, Vec<2> & n) const;
43
///
44
virtual Vec<2> EvalPrimePrime (double t) const = 0;
45
46
///
47
virtual double MaxCurvature () const;
48
///
49
virtual double MaxCurvatureLoc (const Point<2> & p, double rad) const;
50
51
///
52
virtual Point<2> CurvCircle (double t) const;
53
///
54
virtual void Print (ostream & /* str */) const { };
55
56
///
57
virtual int SectionUsed (double /* t */) const { return 1; }
58
///
59
virtual void Reduce (const Point<2> & /* p */, double /* rad */) { };
60
///
61
virtual void UnReduce () { };
62
};
63
64
65
///
66
class BSplineCurve2d : public ExplicitCurve2d
67
{
68
///
69
ARRAY<Point<2> > points;
70
///
71
ARRAY<int> intervallused;
72
///
73
int redlevel;
74
75
public:
76
///
77
BSplineCurve2d ();
78
///
79
void AddPoint (const Point<2> & apoint);
80
81
bool Inside (const Point<2> & p, double & dist) const;
82
83
///
84
virtual double ProjectParam (const Point<2> & p) const;
85
///
86
virtual double MinParam () const { return 0; }
87
///
88
virtual double MaxParam () const { return points.Size(); }
89
///
90
virtual Point<2> Eval (double t) const;
91
///
92
virtual Vec<2> EvalPrime (double t) const;
93
///
94
virtual Vec<2> EvalPrimePrime (double t) const;
95
///
96
virtual void Print (ostream & str) const;
97
98
///
99
virtual int SectionUsed (double t) const;
100
///
101
virtual void Reduce (const Point<2> & p, double rad);
102
///
103
virtual void UnReduce ();
104
};
105
106
107
108
109
#endif
110
111