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