mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-29 23:30:33 +05:00
68 lines
1.3 KiB
C++
68 lines
1.3 KiB
C++
#ifndef FILE_CURVE2D
|
|
#define FILE_CURVE2D
|
|
|
|
/**************************************************************************/
|
|
/* File: curve2d.hh */
|
|
/* Author: Joachim Schoeberl */
|
|
/* Date: 24. Jul. 96 */
|
|
/**************************************************************************/
|
|
|
|
namespace netgen
|
|
{
|
|
|
|
|
|
/*
|
|
|
|
2D Curve repesentation
|
|
|
|
*/
|
|
|
|
|
|
|
|
///
|
|
class Curve2d : public Manifold
|
|
{
|
|
public:
|
|
///
|
|
virtual void Project (Point<2> & p) const = 0;
|
|
///
|
|
virtual void NormalVector (const Point<2> & p, Vec<2> & n) const = 0;
|
|
};
|
|
|
|
///
|
|
class CircleCurve2d : public Curve2d
|
|
{
|
|
///
|
|
Point<2> center;
|
|
///
|
|
double rad;
|
|
public:
|
|
///
|
|
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;
|
|
};
|
|
|
|
///
|
|
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;
|
|
};
|
|
|
|
|
|
}
|
|
|
|
#endif
|