1 #ifndef FILE_CURVE2D
2 #define FILE_CURVE2D
3 
4 /**************************************************************************/
5 /* File:   curve2d.hh                                                     */
6 /* Author: Joachim Schoeberl                                              */
7 /* Date:   24. Jul. 96                                                    */
8 /**************************************************************************/
9 
10 namespace netgen
11 {
12 
13 
14   /*
15 
16   2D Curve repesentation
17 
18   */
19 
20 
21 
22   ///
23   class Curve2d : public Manifold
24   {
25   public:
26     ///
27     virtual void Project (Point<2> & p) const = 0;
28     ///
29     virtual void NormalVector (const Point<2> & p, Vec<2> & n) const = 0;
30   };
31 
32   ///
33   class CircleCurve2d : public Curve2d
34   {
35     ///
36     Point<2> center;
37     ///
38     double rad;
39   public:
40     ///
41     CircleCurve2d (const Point<2> & acenter, double arad);
42     ///
43     virtual void Project (Point<2> & p) const;
44     ///
45     virtual void NormalVector (const Point<2> & p, Vec<2> & n) const;
46   };
47 
48   ///
49   class QuadraticCurve2d : public Curve2d
50   {
51     ///
52     double cxx, cyy, cxy, cx, cy, c;
53   public:
54     ///
55     QuadraticCurve2d ();
56     ///
57     void Read (istream & ist);
58     ///
59     virtual void Project (Point<2> & p) const;
60     ///
61     virtual void NormalVector (const Point<2> & p, Vec<2> & n) const;
62   };
63 
64 
65 }
66 
67 #endif
68