From 7ab038c6014d2c30202812d6305a60cbed055b09 Mon Sep 17 00:00:00 2001
From: Francois Henrotte <francois.henrotte@ulg.ac.be>
Date: Tue, 19 Feb 2013 11:51:59 +0000
Subject: [PATCH] bug fix

---
 Mesh/Matrix.h         |  2 +-
 Mesh/cross3D.h        |  2 ++
 Mesh/directions3D.cpp | 15 +++++++++------
 Mesh/simple3D.cpp     | 10 +++++-----
 4 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/Mesh/Matrix.h b/Mesh/Matrix.h
index e721bf8c94..81ef1227aa 100644
--- a/Mesh/Matrix.h
+++ b/Mesh/Matrix.h
@@ -39,7 +39,7 @@ class Matrix{
   double get_m31(){ return m31; }
   double get_m12(){ return m12; }
   double get_m22(){ return m22; }
-  double get_m32(){ return m23; }
+  double get_m32(){ return m32; }
   double get_m13(){ return m13; }
   double get_m23(){ return m23; }
   double get_m33(){ return m33; }
diff --git a/Mesh/cross3D.h b/Mesh/cross3D.h
index 8c4a3553ae..990805c32e 100644
--- a/Mesh/cross3D.h
+++ b/Mesh/cross3D.h
@@ -13,6 +13,8 @@
 #include "stat_quatern.h"
 using namespace CwMtx;
 
+#include "Matrix.h"
+
 //double max(const double a, const double b) { return (b>a)?b:a;}
 double min(const double a, const double b) { return (b<a)?b:a; }
 double squ(const double a) { return a*a; }
diff --git a/Mesh/directions3D.cpp b/Mesh/directions3D.cpp
index 2b869e864d..3bfa04943e 100644
--- a/Mesh/directions3D.cpp
+++ b/Mesh/directions3D.cpp
@@ -549,30 +549,31 @@ void Frame_field::save(GRegion* gr, const std::string& filename){
       m = itA->second;
 
     p = SPoint3(pVertex->x(),pVertex->y(),pVertex->z());
+    double val1=0, val2=0;
     p1 = SPoint3(pVertex->x() + k*m.get_m11(),
 		 pVertex->y() + k*m.get_m21(),
 		 pVertex->z() + k*m.get_m31());
-    print_segment(p,p1,pVertex->z(),pVertex->z(),file);
+    print_segment(p,p1,val1,val2,file);
     p1 = SPoint3(pVertex->x() - k*m.get_m11(),
 		 pVertex->y() - k*m.get_m21(),
 		 pVertex->z() - k*m.get_m31());
-    print_segment(p,p1,pVertex->z(),pVertex->z(),file);
+    print_segment(p,p1,val1,val2,file);
     p1 = SPoint3(pVertex->x() + k*m.get_m12(),
 		 pVertex->y() + k*m.get_m22(),
 		 pVertex->z() + k*m.get_m32());
-    print_segment(p,p1,pVertex->z(),pVertex->z(),file);
+    print_segment(p,p1,val1,val2,file);
     p1 = SPoint3(pVertex->x() - k*m.get_m12(),
 		 pVertex->y() - k*m.get_m22(),
 		 pVertex->z() - k*m.get_m32());
-    print_segment(p,p1,pVertex->z(),pVertex->z(),file);
+    print_segment(p,p1,val1,val2,file);
     p1 = SPoint3(pVertex->x() + k*m.get_m13(),
 		 pVertex->y() + k*m.get_m23(),
 		 pVertex->z() + k*m.get_m33());
-    print_segment(p,p1,pVertex->z(),pVertex->z(),file);
+    print_segment(p,p1,val1,val2,file);
     p1 = SPoint3(pVertex->x() - k*m.get_m13(),
 		 pVertex->y() - k*m.get_m23(),
 		 pVertex->z() - k*m.get_m33());
-    print_segment(p,p1,pVertex->z(),pVertex->z(),file);
+    print_segment(p,p1,val1,val2,file);
   }
   file << "};\n";
   file.close();
@@ -584,6 +585,7 @@ void Frame_field::fillTreeVolume(GRegion* gr){
   std::cout << "Filling ANN tree with " << n << " vertices" << std::endl;
   annTreeData = annAllocPts(n,3);
   int index=0;
+  vertIndices.clear();
   for(std::map<MVertex*, std::set<MVertex*> >::iterator iter = crossData.vertex_to_vertices.begin(); 
       iter != crossData.vertex_to_vertices.end(); ++iter){
     MVertex* pVertex = iter->first;
@@ -591,6 +593,7 @@ void Frame_field::fillTreeVolume(GRegion* gr){
     annTreeData[index][1] = pVertex->y();
     annTreeData[index][2] = pVertex->z();
     vertIndices.push_back(pVertex->getNum());
+    index++;
   }
   annTree = new ANNkd_tree(annTreeData,n,3);
 #endif
diff --git a/Mesh/simple3D.cpp b/Mesh/simple3D.cpp
index c17f71e570..14ae82855f 100644
--- a/Mesh/simple3D.cpp
+++ b/Mesh/simple3D.cpp
@@ -349,7 +349,7 @@ void Filler::treat_region(GRegion* gr){
   Frame_field::init_region(gr);
 
   int NumSmooth = CTX::instance()->mesh.nbSmoothing;
-  int NumIter = 0;
+  int NumIter = 1;
   double eold;
   Frame_field::init(gr);
   double enew = Frame_field::smooth(gr);
@@ -384,6 +384,8 @@ void Filler::treat_region(GRegion* gr){
 	  boundary_vertices.push_back(*it);
 	}
   }
+  std::ofstream file("nodes.pos");
+  file << "View \"test\" {\n";	
 
   for(i=0;i<boundary_vertices.size();i++){
     x = boundary_vertices[i]->x();
@@ -394,11 +396,9 @@ void Filler::treat_region(GRegion* gr){
 	compute_parameters(node,gr);
 	rtree.Insert(node->min,node->max,node);
 	fifo.push(node);
+	print_node(node,file);
   }
   
-  //std::ofstream file("nodes.pos");
-  //file << "View \"test\" {\n";	
-  
   count = 1;
   while(!fifo.empty()){
     parent = fifo.front();
@@ -448,7 +448,7 @@ void Filler::treat_region(GRegion* gr){
 	count++;
   }
   
-  //file << "};\n";
+  file << "};\n";
 
   int option = CTX::instance()->mesh.algo3d;
   CTX::instance()->mesh.algo3d = ALGO_3D_DELAUNAY;
-- 
GitLab