summaryrefslogtreecommitdiff
path: root/assets/javascripts/rectangles/app.js
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-04-15 17:54:55 -0400
committerJules Laplace <jules@okfoc.us>2014-04-15 17:54:55 -0400
commit3d4a9829797f850fde2b65afbaa4dc45f519c3eb (patch)
treed8dd228b8713851742b9465742a9d3c256a712bc /assets/javascripts/rectangles/app.js
parentd6e459e2808ea16a4a0715e294182bafe74d310c (diff)
drawing boxes
Diffstat (limited to 'assets/javascripts/rectangles/app.js')
-rw-r--r--assets/javascripts/rectangles/app.js177
1 files changed, 0 insertions, 177 deletions
diff --git a/assets/javascripts/rectangles/app.js b/assets/javascripts/rectangles/app.js
deleted file mode 100644
index 071dfe8..0000000
--- a/assets/javascripts/rectangles/app.js
+++ /dev/null
@@ -1,177 +0,0 @@
-window.ctx = window.rects = window.regions = window.w = window.h = null;
-
-var app = new function(){
- var canvas = document.createElement("canvas")
- var ctx = window.ctx = canvas.getContext("2d")
- var w = window.w = canvas.width = 500
- var h = window.h = canvas.height = 500
- var regions = []
- document.querySelector("#map").appendChild(canvas)
-
- function init(){
- bind()
- animate()
- }
- function animate(){
- requestAnimationFrame(animate)
- clear_canvas()
-
- if (modified) {
- solve_rects()
- }
- draw_ruler()
- draw_regions(regions)
- draw_mouse(mouse)
- z = false
- }
-
- var rects = window.rects = [
- new rect(100,100, 300,300),
- new rect(200,200, 400,400),
- ]
-
- this.creating = false
- this.dragging = false
-
- var modified = true
- var mouse = new rect(0,0,0,0)
-
- function bind(){
- canvas.addEventListener("mousedown", function(e){
- var x = e.pageX, y = e.pageY
- mouse = new rect (x,y)
- if (e.shiftKey) {
- mouse.quantize(10)
- }
-
- var intersects = rects.filter(function(r){ return r.focused = r.contains(x,y) })
- // console.log(intersects)
-
- if (intersects.length){
- app.dragging = intersects[0]
- }
- else {
- app.creating = true
- }
- if (e.shiftKey && app.dragging) {
- app.dragging.quantize(10)
- }
- })
- canvas.addEventListener("mousemove", function(e){
- var x, y
- if (e.shiftKey) {
- x = quantize( e.pageX, 10 )
- y = quantize( e.pageY, 10 )
- }
- else {
- x = e.pageX
- y = e.pageY
- }
-
- mouse.x.b = x
- mouse.y.b = y
-
- if (app.dragging) {
- app.dragging.translation.a = mouse.x.magnitude()
- app.dragging.translation.b = mouse.y.magnitude()
- }
- else if (app.creating) {
- mouse.x.b = x
- mouse.y.b = y
- }
- else {
- mouse.x.a = mouse.x.b
- mouse.y.a = mouse.y.b
- }
- })
- document.addEventListener("mouseup", function(e){
- if (app.creating) {
- if (mouse.height() != 0 && mouse.width() != 0) {
- rects.push(mouse.normalize())
- }
- }
- if (app.dragging) {
- app.dragging.normalize()
- }
- mouse = new rect(e.pageX, e.pageY)
- app.creating = app.dragging = false
- modified = true
- })
- }
-
- function solve_rects(){
- rects = sort_rects_by_position(rects)
-
- for (var i = 0; i < rects.length; i++) {
- rects[i].id = i
- rects[i].reset()
- }
- regions = []
-
- var left, right
- for (var i = 0; i < rects.length; i++) {
- left = rects[i]
- for (var j = i+1; j < rects.length; j++) {
- right = rects[j]
- if (left.intersects(right)) {
- left.clipTo(right)
- right.clipTo(left)
- }
- if (left.x.b < right.x.a) {
- break
- }
- }
- }
- for (var i = 0; i < rects.length; i++) {
- regions = regions.concat(rects[i].regions)
- }
-
- regions = sort_rects_by_area( regions.filter(function(r){ return !!r }) )
-
- var ty = new tree (regions[0].y.a, [regions[0]])
- var tx = new tree (regions[0].x.a, ty)
- var ttx, tty
-
- for (var i = 1; i < regions.length; i++) {
- ttx = tx.add (regions[i].x.a, null)
- if (ttx.data) {
- tty = ttx.data.add (regions[i].y.a, null)
- // duplicate polygon?
- if (tty.data) {
- tty.data.forEach(function(yy, ii){
- if (yy.intersects(regions[i])) {
- if (yy.area() > regions[i].area()) {
- regions[i].dupe = true
- }
- else {
- yy.dupe = true
- tty.data[ii] = regions[i]
- }
- }
- })
- }
- else {
- tty.data = [regions[i]]
- }
- }
- else {
- ttx.data = new tree (regions[i].y.a, [regions[i]])
- }
- }
-
- regions = sort_rects_by_position(regions)
-
- modified = false
- // document.getElementById("intersects").innerHTML = sort_rects_by_position(regions).join("<br>")
- }
-
- // generate floor and ceiling for some regions
- // generate walls from surviving regions
- // generate ceiling-walls where ceiling has discontinuity
-
-
- this.init = init
- return this
-}
-
-app.init()