Skip to content
Snippets Groups Projects
Select Git revision
  • af796fa7a5ab029bfb25823e36982278a045f534
  • master default
  • cgnsUnstructured
  • partitioning
  • poppler
  • HighOrderBLCurving
  • gmsh_3_0_4
  • gmsh_3_0_3
  • gmsh_3_0_2
  • gmsh_3_0_1
  • gmsh_3_0_0
  • gmsh_2_16_0
  • gmsh_2_15_0
  • gmsh_2_14_1
  • gmsh_2_14_0
  • gmsh_2_13_2
  • gmsh_2_13_1
  • gmsh_2_12_0
  • gmsh_2_11_0
  • gmsh_2_10_1
  • gmsh_2_10_0
  • gmsh_2_9_3
  • gmsh_2_9_2
  • gmsh_2_9_1
  • gmsh_2_9_0
  • gmsh_2_8_6
26 results

gmsh_predicates.cpp

Blame
  • Forked from gmsh / gmsh
    Source project has a limited visibility.
    gmshEdge.cpp 16.45 KiB
    // Gmsh - Copyright (C) 1997-2015 C. Geuzaine, J.-F. Remacle
    //
    // See the LICENSE.txt file for license information. Please report all
    // bugs and problems to the public mailing list <gmsh@geuz.org>.
    
    #include <sstream>
    #include "GModel.h"
    #include "GFace.h"
    #include "GFaceCompound.h"
    #include "gmshEdge.h"
    #include "Geo.h"
    #include "GeoInterpolation.h"
    #include "GmshMessage.h"
    #include "Context.h"
    #include "decasteljau.h"
    
    gmshEdge::gmshEdge(GModel *m, Curve *edge, GVertex *v1, GVertex *v2)
      : GEdge(m, edge->Num, v1, v2), c(edge)
    {
      resetMeshAttributes();
    }
    
    bool gmshEdge::degenerate(int dim) const
    {
      if (c->beg == c->end &&
          c->Typ ==  MSH_SEGM_LINE &&
          List_Nbr(c->Control_Points) == 0){
        Msg::Info("Model Edge %d is degenerate", tag());
        return true;
      }
      return false;
    }
    
    void gmshEdge::resetMeshAttributes()
    {
      meshAttributes.method = c->Method;
      meshAttributes.nbPointsTransfinite = c->nbPointsTransfinite;
      meshAttributes.typeTransfinite = c->typeTransfinite;
      meshAttributes.coeffTransfinite = c->coeffTransfinite;
      meshAttributes.extrude = c->Extrude;
      meshAttributes.reverseMesh = c->ReverseMesh;
    }
    
    Range<double> gmshEdge::parBounds(int i) const
    {
     return Range<double>(c->ubeg, c->uend);
    }
    
    GPoint gmshEdge::point(double par) const
    {
      Vertex a = InterpolateCurve(c, par, 0);
      return GPoint(a.Pos.X, a.Pos.Y, a.Pos.Z, this, par);
    }
    
    SVector3 gmshEdge::firstDer(double par) const
    {
      Vertex a = InterpolateCurve(c, par, 1);
      return SVector3(a.Pos.X, a.Pos.Y, a.Pos.Z);
    }
    
    SVector3 gmshEdge::secondDer(double par) const
    {
      Vertex a = InterpolateCurve(c, par, 2);
      return SVector3(a.Pos.X, a.Pos.Y, a.Pos.Z);
    }
    
    GEntity::GeomType gmshEdge::geomType() const
    {
      switch (c->Typ){
      case MSH_SEGM_LINE : return Line;