From 7cf3d06d128c0ebc3696ac15fe65db4568c30280 Mon Sep 17 00:00:00 2001
From: Guillaume Pasero <guillaume.pasero@c-s.fr>
Date: Wed, 6 Aug 2014 15:52:03 +0200
Subject: [PATCH] BUG: Mantis-942: missing rounding when translating continuous
 index to index

---
 Code/Common/otbPolyLineImageConstIterator.txx | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/Code/Common/otbPolyLineImageConstIterator.txx b/Code/Common/otbPolyLineImageConstIterator.txx
index fa82b3596d..2016bf5dc4 100644
--- a/Code/Common/otbPolyLineImageConstIterator.txx
+++ b/Code/Common/otbPolyLineImageConstIterator.txx
@@ -39,7 +39,7 @@ PolyLineImageConstIterator<TImage, TPath>
   IndexType source, target;
   for (unsigned int i = 0; i < ImageType::ImageDimension; ++i)
     {
-    source[i] = static_cast<unsigned int> (m_InternalVertexIterator.Value()[i]);
+    source[i] = static_cast<unsigned int> (vcl_floor(m_InternalVertexIterator.Value()[i] + 0.5));
     }
   ++m_InternalVertexIterator;
   if (m_InternalVertexIterator != m_Path->GetVertexList()->End())
@@ -47,7 +47,7 @@ PolyLineImageConstIterator<TImage, TPath>
 
     for (unsigned int i = 0; i < ImageType::ImageDimension; ++i)
       {
-      target[i] = static_cast<unsigned int> (m_InternalVertexIterator.Value()[i]);
+      target[i] = static_cast<unsigned int> (vcl_floor(m_InternalVertexIterator.Value()[i] + 0.5));
       }
     }
   else
@@ -78,7 +78,7 @@ PolyLineImageConstIterator<TImage, TPath>
   IndexType source, target;
   for (unsigned int i = 0; i < ImageType::ImageDimension; ++i)
     {
-    source[i] = static_cast<unsigned int> (m_InternalVertexIterator.Value()[i]);
+    source[i] = static_cast<unsigned int> (vcl_floor(m_InternalVertexIterator.Value()[i] + 0.5));
     }
   ++m_InternalVertexIterator;
   if (m_InternalVertexIterator != m_Path->GetVertexList()->End())
@@ -86,7 +86,7 @@ PolyLineImageConstIterator<TImage, TPath>
 
     for (unsigned int i = 0; i < ImageType::ImageDimension; ++i)
       {
-      target[i] = static_cast<unsigned int> (m_InternalVertexIterator.Value()[i]);
+      target[i] = static_cast<unsigned int> (vcl_floor(m_InternalVertexIterator.Value()[i] + 0.5));
       }
     }
   else
@@ -110,7 +110,7 @@ PolyLineImageConstIterator<TImage, TPath>
       IndexType source;
       for (unsigned int i = 0; i < ImageType::ImageDimension; ++i)
         {
-        source[i] = static_cast<unsigned int> (m_InternalVertexIterator.Value()[i]);
+        source[i] = static_cast<unsigned int> (vcl_floor(m_InternalVertexIterator.Value()[i] + 0.5));
         }
       // otbMsgDebugMacro(<<"Source: "<<source);
       ++m_InternalVertexIterator;
@@ -119,7 +119,7 @@ PolyLineImageConstIterator<TImage, TPath>
         IndexType target;
         for (unsigned int i = 0; i < ImageType::ImageDimension; ++i)
           {
-          target[i] = static_cast<unsigned int> (m_InternalVertexIterator.Value()[i]);
+          target[i] = static_cast<unsigned int> (vcl_floor(m_InternalVertexIterator.Value()[i] + 0.5));
           }
         // otbMsgDebugMacro(<<"Target: "<<target);
         m_InternalImageIterator = InternalImageIteratorType(const_cast<ImageType *> (m_Image.GetPointer()), source,
-- 
GitLab