From e3f6ff7a0b481a47b385c9e9d220c2be593d1552 Mon Sep 17 00:00:00 2001
From: Jean-Francois Remacle <jean-francois.remacle@uclouvain.be>
Date: Tue, 24 Nov 2009 09:01:03 +0000
Subject: [PATCH] fixed transfinite edge mesh for curves that have parameters
 not in [0,1] : nasty ...

---
 Mesh/meshGEdge.cpp | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/Mesh/meshGEdge.cpp b/Mesh/meshGEdge.cpp
index 02cbe26290..78b5cc06cc 100644
--- a/Mesh/meshGEdge.cpp
+++ b/Mesh/meshGEdge.cpp
@@ -104,7 +104,7 @@ static double F_Lc(GEdge *ge, double t)
 
 }
 
-static double F_Transfinite(GEdge *ge, double t)
+static double F_Transfinite(GEdge *ge, double t_)
 {
   double length = ge->length();
   if(length == 0.0){
@@ -112,12 +112,17 @@ static double F_Transfinite(GEdge *ge, double t)
     return 1.;
   }
 
-  SVector3 der = ge->firstDer(t) ;
+  SVector3 der = ge->firstDer(t_) ;
   double d = norm(der);
   double coef = ge->meshAttributes.coeffTransfinite;
   int type = ge->meshAttributes.typeTransfinite;
   int nbpt = ge->meshAttributes.nbPointsTransfinite;
 
+  Range<double> bounds = ge->parBounds(0);
+  double t_begin = bounds.low();
+  double t_end = bounds.high();
+  double t = (t_ - t_begin)/(t_end-t_begin);
+
   double val;
 
   if(coef <= 0.0 || coef == 1.0) {
@@ -281,7 +286,7 @@ void meshGEdge::operator() (GEdge *ge)
     N = 1;
   }
   else if(ge->meshAttributes.Method == MESH_TRANSFINITE){
-    a = Integration(ge, t_begin, t_end, F_Transfinite, Points, 1.e-8);
+    a = Integration(ge, t_begin, t_end, F_Transfinite, Points, CTX::instance()->mesh.lcIntegrationPrecision);
     N = ge->meshAttributes.nbPointsTransfinite;
   }
   else{
-- 
GitLab