Explorar el Código

Search the entire interval for closest double.

Former-commit-id: 99c6e6a51399f96fcb53fbd47d2f8458ff6abc98
Qingnan Zhou hace 9 años
padre
commit
6fa754033d
Se han modificado 1 ficheros con 6 adiciones y 3 borrados
  1. 6 3
      include/igl/copyleft/cgal/assign_scalar.cpp

+ 6 - 3
include/igl/copyleft/cgal/assign_scalar.cpp

@@ -19,9 +19,12 @@ IGL_INLINE void igl::copyleft::cgal::assign_scalar(
   double & d)
   double & d)
 {
 {
   const auto interval = CGAL::to_interval(cgal);
   const auto interval = CGAL::to_interval(cgal);
-  assert(nextafter(interval.first, interval.second) == interval.second);
-  d = (cgal-interval.first) < (interval.second-cgal)?
-    interval.first:interval.second;
+  d = interval.first;
+  while (d <= interval.second) {
+      const double next = nextafter(d, interval.second);
+      if (CGAL::abs(cgal-d) < CGAL::abs(cgal-next)) break;
+      d = next;
+  }
 }
 }
 
 
 IGL_INLINE void igl::copyleft::cgal::assign_scalar(
 IGL_INLINE void igl::copyleft::cgal::assign_scalar(