diff options
Diffstat (limited to 'rectangles.html')
| -rw-r--r-- | rectangles.html | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/rectangles.html b/rectangles.html index 882b862..0c054d5 100644 --- a/rectangles.html +++ b/rectangles.html @@ -134,32 +134,53 @@ function line (x,y,a,b,translation){ function solve_rects(){ rects = sort_rects() + + for (var i = 0; i < rects.length; i++) { + rects[i].reset() + } regions = [] - var x_intervals = [] - var y_intervals = [] + var left, right for (var i = 0; i < rects.length; i++) { left = rects[i] - for (var j = 0; j < rects.length; j++) { + for (var j = i+1; j < rects.length; j++) { right = rects[j] if (left.intersects(right)) { -// left.clipTo(right) -// right.clipTo(left) + left.clipTo(right) + right.clipTo(left) } if (left.x.b < right.x.a) { break } } } -// for (var i = 0; i < rects.length; i++) { -// regions.concat(rect[i].regions) -// } + for (var i = 0; i < rects.length; i++) { + regions = regions.concat(rects[i].regions) + } // handle when two walls are coplanar // generate floor and ceiling for some regions // generate walls from surviving regions // generate ceiling-walls where ceiling has discontinuity - - document.getElementById("intersects").innerHTML = rects.join("<br>") + + document.getElementById("intersects").innerHTML = regions.join("<br>") + + var colors = [ + "rgba(255,0,0,0.5)", + "rgba(255,128,0,0.5)", + "rgba(128,255,0,0.5)", + "rgba(0,255,0,0.5)", + "rgba(0,255,128,0.5)", + "rgba(0,128,255,0.5)", + "rgba(0,0,255,0.5)", + "rgba(128,0,255,0.5)", + "rgba(255,0,255,0.5)", + "rgba(255,0,128,0.5)", + ] + regions = regions.filter(function(r){ return !!r }) + for (var i = 0; i < regions.length; i++) { + ctx.fillStyle = colors[i % colors.length] + regions[i] && regions[i].fill() + } } function sort_rects(){ return rects.sort(function(a,b){ @@ -188,7 +209,7 @@ function draw_rects(){ for (var i = 0; i < rects.length; i++) { ctx.fillStyle = "rgba(0,200,220,0.2)" - rects[i].fill() +// rects[i].fill() // line(rect.x, 0, rect.x, rect.y) // line(0, rect.y, rect.x, rect.y) } |
