summaryrefslogtreecommitdiff
path: root/public/assets/javascripts
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts')
-rw-r--r--public/assets/javascripts/rectangles/models/rect.js43
-rw-r--r--public/assets/javascripts/rectangles/models/vec2.js3
2 files changed, 36 insertions, 10 deletions
diff --git a/public/assets/javascripts/rectangles/models/rect.js b/public/assets/javascripts/rectangles/models/rect.js
index f724ecc..c14d62c 100644
--- a/public/assets/javascripts/rectangles/models/rect.js
+++ b/public/assets/javascripts/rectangles/models/rect.js
@@ -143,23 +143,46 @@
var x_intervals = this.x.split( r.x, LEFT, RIGHT )
var y_intervals = this.y.split( r.y, FRONT, BACK )
- x_intervals.forEach(function(x){
- y_intervals.forEach(function(y){
+ x_intervals.forEach(function(x, i){
+ y_intervals.forEach(function(y, i){
var rn = new Rect(x[0], y[0])
rn.id = rz.id
rn.sides = ((x[1] | y[1]) & sides)
- if (r.x.contains(rn.x.a)) {
- rn.sides &= ~ LEFT
+ if (r.x.contains(rn.x.a) && r.x.contains(rn.x.b)) {
+ if (rz.y.a == rn.y.a && r.y.containsCenter(rn.y.a)) { // top edges
+ rn.sides &= ~ FRONT
+ }
+ if (rz.y.b == rn.y.b && r.y.containsCenter(rn.y.b)) { // bottom edges
+ rn.sides &= ~ BACK
+ }
}
- if (r.x.contains(rn.x.b)) {
- rn.sides &= ~ RIGHT
+
+ if (r.y.contains(rn.y.a) && r.y.contains(rn.y.b)) {
+ if (rz.x.a == rn.x.a && r.x.containsCenter(rn.x.a)) { // left edges
+ rn.sides &= ~ LEFT
+ }
+
+ if (rz.x.b == rn.x.b && r.x.containsCenter(rn.x.b) ) { // right edges
+ rn.sides &= ~ RIGHT
+ }
}
-// if (r.y.contains(rn.y.a)) {
-// rn.sides &= ~ FRONT
+
+// if (rz.x.contains(r.x.a) || rz.x.contains(r.x.b)) {
+// if (r.x.contains(rn.x.b)) {
+// rn.sides &= ~ LEFT
+// }
+// if (r.x.contains(rn.x.b)) {
+// rn.sides &= ~ RIGHT
+// }
// }
-// if (r.y.contains(rn.y.a)) {
-// rn.sides &= ~ BACK
+// if (rz.y.contains(r.y.a) || rz.y.contains(r.y.b)) {
+// if (r.y.contains(rn.y.a)) {
+// rn.sides &= ~ FRONT
+// }
+// if (r.y.contains(rn.y.b)) {
+// rn.sides &= ~ BACK
+// }
// }
// if (r.intersects(rn)) {
diff --git a/public/assets/javascripts/rectangles/models/vec2.js b/public/assets/javascripts/rectangles/models/vec2.js
index 447c7a3..5c2b519 100644
--- a/public/assets/javascripts/rectangles/models/vec2.js
+++ b/public/assets/javascripts/rectangles/models/vec2.js
@@ -70,6 +70,9 @@
vec2.prototype.contains = function(n){
return this.a <= n && n <= this.b
}
+ vec2.prototype.containsCenter = function(n){
+ return this.a < n && n < this.b
+ }
vec2.prototype.containsDisc = function(n,r){
return this.a <= n-r && n+r <= this.b
}