function compare_rect_position(a,b){ if (a.x.a < b.x.a) { return -1 } if (a.x.a > b.x.a) { return 1 } if (a.y.a < b.y.a) { return -1 } if (a.y.a > b.y.a) { return 1 } return 0 } function compare_rect_area (a,b){ if (a[0] < b[0]) { return 1 } if (a[0] > b[0]) { return -1 } return 0 } function sort_rooms_by_id(list){ return list.sort(function(a,b){ return a.id < b.id ? -1 : a.id == b.id ? 0 : 1 }) } function sort_rooms_by_height(list){ return list.sort(function(b,a){ return a.height < b.height ? -1 : a.height == b.height ? 0 : 1 }) } function sort_rooms_by_position(list){ return list.sort(function(a,b){ return compare_rect_position(a.rect, b.rect) }) } function sort_rooms_by_area(list){ return list.map(function(r){ return [r.rect.area(), r] }) .sort(compare_rect_area) .map(function(r){ return r[1] }) } function sort_rects_by_position(list){ return list.sort(compare_rect_position) } function sort_rects_by_area(list){ return list.map(function(r){ return [r.area(), r] }) .sort(compare_rect_area) .map(function(r){ return r[1] }) } function compare_z(a,b){ return a.rect.y.a < b.rect.y.a ? -1 : a.rect.y.a == b.rect.y.a ? 0 : 1 } function compare_x(a,b){ return a.rect.x.a > b.rect.x.a ? -1 : a.rect.x.a == b.rect.x.a ? 0 : 1 }