From cb0b11310e41d89368f2814f5c89ab80a0dee525 Mon Sep 17 00:00:00 2001 From: Jamis Buck Date: Thu, 17 Feb 2011 10:44:01 -0700 Subject: [PATCH] fix problem with outermost edges on boundary polygons not being generated --- lib/kaleidoscope/pattern.rb | 7 +++++-- test/pattern_test.rb | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/kaleidoscope/pattern.rb b/lib/kaleidoscope/pattern.rb index a543aac..c17cdf2 100644 --- a/lib/kaleidoscope/pattern.rb +++ b/lib/kaleidoscope/pattern.rb @@ -51,6 +51,7 @@ def build_at(seed, increment, &validator) validator ||= proc { |pt| true } seeds = [] + valid_edges_generated = false @tile.phase_count.times do |n| data = @tile.phase(n) @@ -81,11 +82,13 @@ def build_at(seed, increment, &validator) poly = (@poly_map[@dict.canonical(trans.apply(center))] ||= Polygon.new) poly.outside! unless inside valid_edges.each { |edge, neighbor| poly.edges[edge] = neighbor } + valid_edges_generated = true end end - neighbor = @dict.canonical(trans.apply(data[:neighbor])) - seeds << neighbor if validator[neighbor] + if valid_edges_generated + seeds << @dict.canonical(trans.apply(data[:neighbor])) + end end return seeds diff --git a/test/pattern_test.rb b/test/pattern_test.rb index 3bd45ca..6b139c1 100644 --- a/test/pattern_test.rb +++ b/test/pattern_test.rb @@ -73,6 +73,6 @@ def test_generate_should_mark_edges_as_outside_when_they_are_not_fully_inside_th def test_generate_should_cover_all_seed_sites_within_the_bounds p = Pattern.new(6, 3) p.generate! { |pt| pt.x.between?(-1.01, 3.01) && pt.y.between?(-1.01, 3.01) } - assert_equal 49, p.polygons.length + assert_equal 50, p.polygons.length end end