1 // Gmsh - Copyright (C) 1997-2021 C. Geuzaine, J.-F. Remacle
2 //
3 // See the LICENSE.txt file in the Gmsh root directory for license information.
4 // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues.
5 
6 #ifndef DISCRETE_EDGE_H
7 #define DISCRETE_EDGE_H
8 
9 #include "GModel.h"
10 #include "GEdge.h"
11 
12 class discreteEdge : public GEdge {
13 private:
14   std::vector<double> _pars;
15   std::vector<SPoint3> _discretization;
16   bool _getLocalParameter(const double &t, int &iEdge, double &tLoc) const;
17 
18 public:
19   discreteEdge(GModel *model, int num, GVertex *_v0, GVertex *_v1);
20   discreteEdge(GModel *model, int num);
21   discreteEdge(GModel *model);
~discreteEdge()22   virtual ~discreteEdge() {}
geomType()23   virtual GeomType geomType() const { return DiscreteCurve; }
24   virtual GPoint point(double p) const;
25   virtual SVector3 firstDer(double par) const;
26   virtual double curvature(double par) const;
haveParametrization()27   virtual bool haveParametrization() { return !_pars.empty(); }
28   virtual Range<double> parBounds(int) const;
29   int createGeometry();
30   virtual void mesh(bool verbose);
minimumDrawSegments()31   int minimumDrawSegments() const { return 2 * _pars.size(); }
minimumMeshSegments()32   virtual int minimumMeshSegments() const { return periodic(0) ? 3 : 2; }
33   virtual SPoint2 reparamOnFace(const GFace *face, double epar, int dir) const;
34   bool writeParametrization(FILE *fp, bool binary);
35   bool readParametrization(FILE *fp, bool binary);
36 };
37 
38 #endif
39