diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-07-24 14:45:22 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-07-24 14:45:22 -0400 |
| commit | 9261438f86b1faf22a0f8d9a366fb0daa3dd090d (patch) | |
| tree | 20c53a132932afba88c9f1f7af4f0cd9eb9d6ae4 /public/assets/javascripts/rectangles/engine | |
| parent | 81bd659b6ba25f28267a0b63e502807e7f5e1ac9 (diff) | |
iterative culling algorithm
Diffstat (limited to 'public/assets/javascripts/rectangles/engine')
| -rw-r--r-- | public/assets/javascripts/rectangles/engine/rooms/clipper.js | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/public/assets/javascripts/rectangles/engine/rooms/clipper.js b/public/assets/javascripts/rectangles/engine/rooms/clipper.js index 365ae8c..d67f6ad 100644 --- a/public/assets/javascripts/rectangles/engine/rooms/clipper.js +++ b/public/assets/javascripts/rectangles/engine/rooms/clipper.js @@ -52,7 +52,7 @@ base.reset_rects() base.clip_rects() - base.cull_rects() + base.cull_rects_iterative() Rooms.regions = sort.rects_by_position(regions) } @@ -131,6 +131,26 @@ return regions } + // Find overlapping regions and dedupe the smaller ones + base.cull_rects_iterative = function(){ + regions = sort.rects_by_area( regions ) + + var region_i, region_j, i, j, _len + + for (i = 0, _len = regions.length; i < _len-1; i++) { + region_i = regions[i] + for (j = i+1; j < _len; j++) { + region_j = regions[j] + if (region_j.dupe) continue; + if (region_i.overlaps(region_j)) { + region_i.dupe = true + } + } + } + + return regions + } + return base } |
