From 7bfd9a6fd226a86c4fe17f6462084ce6a23a9143 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Thu, 28 Oct 2004 18:50:27 +0000
Subject: [PATCH] Fixed bug in second order mesh of closed curves

---
 Mesh/SecondOrder.cpp | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/Mesh/SecondOrder.cpp b/Mesh/SecondOrder.cpp
index 4e7cff9e72..f4631c2fae 100644
--- a/Mesh/SecondOrder.cpp
+++ b/Mesh/SecondOrder.cpp
@@ -1,4 +1,4 @@
-// $Id: SecondOrder.cpp,v 1.27 2004-08-12 16:57:32 geuzaine Exp $
+// $Id: SecondOrder.cpp,v 1.28 2004-10-28 18:50:27 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -86,11 +86,17 @@ Vertex *onCurve(Vertex * v1, Vertex * v2)
     ok2 = 0;
   }
 
+  // Ugly fix for closed curves
+  if((THEC->beg->Num == THEC->end->Num) &&
+     (u1 == THEC->ubeg || u1 == THEC->uend ||
+      u2 == THEC->ubeg || u2 == THEC->uend)){
+    ok1 = ok2 = 0;
+  }
+
   if(ok1 && ok2){
     v = InterpolateCurve(THEC, 0.5 * (u1 + u2), 0);
   }
   else{
-    // too bad (should normally not happen)
     v.Pos.X = (v1->Pos.X + v2->Pos.X) * 0.5;
     v.Pos.Y = (v1->Pos.Y + v2->Pos.Y) * 0.5;
     v.Pos.Z = (v1->Pos.Z + v2->Pos.Z) * 0.5;
-- 
GitLab