Path: blob/devel/ElmerGUI/netgen/libsrc/csg/explicitcurve2d.hpp
3206 views
#ifndef FILE_EXPLICITCURVE2D1#define FILE_EXPLICITCURVE2D23/**************************************************************************/4/* File: explicitcurve2d.hh */5/* Author: Joachim Schoeberl */6/* Date: 14. Oct. 96 */7/**************************************************************************/89/*1011Explicit 2D Curve repesentation1213*/14151617///18class ExplicitCurve2d : public Curve2d19{20public:21///22ExplicitCurve2d ();2324///25virtual void Project (Point<2> & p) const;26///27virtual double ProjectParam (const Point<2> & p) const = 0;28///29virtual double NumericalProjectParam (const Point<2> & p, double lb, double ub) const;30///31virtual double MinParam () const = 0;32///33virtual double MaxParam () const = 0;34///35virtual Point<2> Eval (double t) const = 0;36///37virtual Vec<2> EvalPrime (double t) const = 0;38///39virtual Vec<2> Normal (double t) const;40///41virtual void NormalVector (const Point<2> & p, Vec<2> & n) const;42///43virtual Vec<2> EvalPrimePrime (double t) const = 0;4445///46virtual double MaxCurvature () const;47///48virtual double MaxCurvatureLoc (const Point<2> & p, double rad) const;4950///51virtual Point<2> CurvCircle (double t) const;52///53virtual void Print (ostream & /* str */) const { };5455///56virtual int SectionUsed (double /* t */) const { return 1; }57///58virtual void Reduce (const Point<2> & /* p */, double /* rad */) { };59///60virtual void UnReduce () { };61};626364///65class BSplineCurve2d : public ExplicitCurve2d66{67///68ARRAY<Point<2> > points;69///70ARRAY<int> intervallused;71///72int redlevel;7374public:75///76BSplineCurve2d ();77///78void AddPoint (const Point<2> & apoint);7980bool Inside (const Point<2> & p, double & dist) const;8182///83virtual double ProjectParam (const Point<2> & p) const;84///85virtual double MinParam () const { return 0; }86///87virtual double MaxParam () const { return points.Size(); }88///89virtual Point<2> Eval (double t) const;90///91virtual Vec<2> EvalPrime (double t) const;92///93virtual Vec<2> EvalPrimePrime (double t) const;94///95virtual void Print (ostream & str) const;9697///98virtual int SectionUsed (double t) const;99///100virtual void Reduce (const Point<2> & p, double rad);101///102virtual void UnReduce ();103};104105106107108#endif109110111