netgen/libsrc/csg/curve2d.hpp

68 lines
1.3 KiB
C++
Raw Normal View History

2009-01-13 04:40:13 +05:00
#ifndef FILE_CURVE2D
#define FILE_CURVE2D
/**************************************************************************/
/* File: curve2d.hh */
/* Author: Joachim Schoeberl */
/* Date: 24. Jul. 96 */
/**************************************************************************/
2009-09-07 17:50:13 +06:00
namespace netgen
{
/*
2009-01-13 04:40:13 +05:00
2D Curve representation
2009-01-13 04:40:13 +05:00
2009-09-07 17:50:13 +06:00
*/
2009-01-13 04:40:13 +05:00
2009-09-07 17:50:13 +06:00
///
class Curve2d : public Manifold
2009-01-13 04:40:13 +05:00
{
public:
2009-09-07 17:50:13 +06:00
///
virtual void Project (Point<2> & p) const = 0;
///
virtual void NormalVector (const Point<2> & p, Vec<2> & n) const = 0;
2009-01-13 04:40:13 +05:00
};
///
2009-09-07 17:50:13 +06:00
class CircleCurve2d : public Curve2d
{
///
Point<2> center;
///
double rad;
2009-01-13 04:40:13 +05:00
public:
2009-09-07 17:50:13 +06:00
///
CircleCurve2d (const Point<2> & acenter, double arad);
///
virtual void Project (Point<2> & p) const;
///
virtual void NormalVector (const Point<2> & p, Vec<2> & n) const;
2009-01-13 04:40:13 +05:00
};
///
2009-09-07 17:50:13 +06:00
class QuadraticCurve2d : public Curve2d
{
///
double cxx, cyy, cxy, cx, cy, c;
public:
///
QuadraticCurve2d ();
///
void Read (istream & ist);
///
virtual void Project (Point<2> & p) const;
///
virtual void NormalVector (const Point<2> & p, Vec<2> & n) const;
};
}
2009-01-13 04:40:13 +05:00
#endif