From 919d1131f80fb2ac5de0b3a66022225197ce7355 Mon Sep 17 00:00:00 2001
From: Alessandro Ranellucci <aar@cpan.org>
Date: Wed, 27 Feb 2013 11:04:14 +0100
Subject: [PATCH] Use nearest-neighbor search for internal perimeters too.
 #1025

---
 lib/Slic3r/Layer/Region.pm | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/lib/Slic3r/Layer/Region.pm b/lib/Slic3r/Layer/Region.pm
index eb55fcc55..d1fd5b9c6 100644
--- a/lib/Slic3r/Layer/Region.pm
+++ b/lib/Slic3r/Layer/Region.pm
@@ -173,7 +173,7 @@ sub make_perimeters {
     # )
     my @perimeters = ();  # one item per depth; each item
     
-    # organize islands using a shortest path search
+    # organize islands using a nearest-neighbor search
     my @surfaces = @{chained_path_items([
         map [ $_->contour->[0], $_ ], @{$self->slices},
     ])};
@@ -245,6 +245,12 @@ sub make_perimeters {
             
             last if !@new_offsets || $loop == $loop_number;
             @last_offsets = @new_offsets;
+            
+            # sort loops before storing them
+            @last_offsets = @{chained_path_items([
+                map [ $_->contour->[0], $_ ], @last_offsets,
+            ])};
+            
             push @{ $perimeters[-1] }, [@last_offsets];
         }