diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-07-22 11:39:12 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-07-22 11:39:12 -0400 |
| commit | e2b1d4ca8c7a83b41fe4c0fc6c4d9490a6736c68 (patch) | |
| tree | 13c12eee35a85835f8245db4d2397734737e3268 /public/assets/javascripts/rectangles/models | |
| parent | 268966ed99185cc53b5ae6d9362298cde270d667 (diff) | |
module stuff
Diffstat (limited to 'public/assets/javascripts/rectangles/models')
| -rw-r--r-- | public/assets/javascripts/rectangles/models/rect.js | 9 | ||||
| -rw-r--r-- | public/assets/javascripts/rectangles/models/vec2.js | 223 |
2 files changed, 123 insertions, 109 deletions
diff --git a/public/assets/javascripts/rectangles/models/rect.js b/public/assets/javascripts/rectangles/models/rect.js index a4fbd87..315adef 100644 --- a/public/assets/javascripts/rectangles/models/rect.js +++ b/public/assets/javascripts/rectangles/models/rect.js @@ -1,5 +1,5 @@ -window.Rect = (function(){ +(function(){ var Rect = function (x0,y0,x1,y1){ if (x0 instanceof vec2) { this.x = x0 @@ -180,6 +180,11 @@ window.Rect = (function(){ return splits } - return Rect + if ('window' in this) { + window.Rect = Rect + } + else if ('module' in this) { + module.exports = Rect + } })() diff --git a/public/assets/javascripts/rectangles/models/vec2.js b/public/assets/javascripts/rectangles/models/vec2.js index b8dba93..9233aec 100644 --- a/public/assets/javascripts/rectangles/models/vec2.js +++ b/public/assets/javascripts/rectangles/models/vec2.js @@ -1,113 +1,122 @@ -function vec2(a,b){ - this.a = a - this.b = b -} -vec2.prototype.magnitude = function(){ - return this.b-this.a -} -vec2.prototype.length = function(){ - return abs(this.b-this.a) -} -vec2.prototype.dist = function(){ - return dist(0,this.a,0,this.b) -} -vec2.prototype.clone = function(){ - return new vec2(this.a, this.b) -} -vec2.prototype.abs = function(){ - if (this.b < this.a) { - this.invert() +(function(){ + var vec2 = function (a,b){ + this.a = a + this.b = b } - return this -} -vec2.prototype.invert = function(){ - this.a = this.a ^ this.b - this.b = this.a ^ this.b - this.a = this.a ^ this.b - return this -} -vec2.prototype.midpoint = function(){ - return lerp(0.5, this.a, this.b) -} -vec2.prototype.eq = function(v){ - return this.a == v.a && this.b == v.b -} -vec2.prototype.add = function(n){ - this.a += n - this.b += n - return this -} -vec2.prototype.sub = function(n){ - this.a -= n - this.b -= n - return this -} -vec2.prototype.mul = function(n){ - this.a *= n - this.b *= n - return this -} -vec2.prototype.div = function(n){ - this.a /= n - this.b /= n - return this -} -vec2.prototype.setPosition = function(n){ - var len = this.length() - this.a = n - this.b = n + len -} -vec2.prototype.setLength = function(n){ - this.b = this.a + n -} -vec2.prototype.normalize = function(){ - var dim = max(this.a, this.b) - this.a = this.a/dim - this.b = this.b/dim - return this -} -vec2.prototype.contains = function(n){ - return this.a <= n && n <= this.b -} -vec2.prototype.containsDisc = function(n,r){ - return this.a <= n-r && n+r <= this.b -} -vec2.prototype.clamp = function(n){ - return clamp(n, this.a, this.b) -} -vec2.prototype.clampDisc = function(n,r){ - return clamp(n, this.a+r, this.b-r) -} -vec2.prototype.intersects = function(v){ - if (this.a < v.a) { - return (v.a < this.b && this.b <= v.b) || (this.a < v.b && v.b <= this.b) + vec2.prototype.magnitude = function(){ + return this.b-this.a } - else if (this.a == v.a) { - return true + vec2.prototype.length = function(){ + return abs(this.b-this.a) } - else if (this.a > v.a) { - return (this.a < v.b && v.b <= this.b) || (v.a < this.b && this.b <= v.b) + vec2.prototype.dist = function(){ + return dist(0,this.a,0,this.b) } -} -vec2.prototype.union = function(v){ - if (this.intersects(v)) { - return new vec2( min(this.a,v.a), max(this.b, v.b) ) + vec2.prototype.clone = function(){ + return new vec2(this.a, this.b) } -} -vec2.prototype.intersection = function(v){ - if (this.intersects(v)) { - return new vec2( max(this.a,v.a), min(this.b, v.b) ) + vec2.prototype.abs = function(){ + if (this.b < this.a) { + this.invert() + } + return this } -} -vec2.prototype.toString = function(){ - return "[" + ~~this.a + " " + ~~this.b + "]" -} -vec2.prototype.serialize = function(){ - return [ ~~this.a, ~~this.b ] -} -vec2.prototype.quantize = function(n){ - n = n || 10 - this.a = quantize(this.a, n) - this.b = quantize(this.b, n) -} - + vec2.prototype.invert = function(){ + this.a = this.a ^ this.b + this.b = this.a ^ this.b + this.a = this.a ^ this.b + return this + } + vec2.prototype.midpoint = function(){ + return lerp(0.5, this.a, this.b) + } + vec2.prototype.eq = function(v){ + return this.a == v.a && this.b == v.b + } + vec2.prototype.add = function(n){ + this.a += n + this.b += n + return this + } + vec2.prototype.sub = function(n){ + this.a -= n + this.b -= n + return this + } + vec2.prototype.mul = function(n){ + this.a *= n + this.b *= n + return this + } + vec2.prototype.div = function(n){ + this.a /= n + this.b /= n + return this + } + vec2.prototype.setPosition = function(n){ + var len = this.length() + this.a = n + this.b = n + len + } + vec2.prototype.setLength = function(n){ + this.b = this.a + n + } + vec2.prototype.normalize = function(){ + var dim = max(this.a, this.b) + this.a = this.a/dim + this.b = this.b/dim + return this + } + vec2.prototype.contains = function(n){ + return this.a <= n && n <= this.b + } + vec2.prototype.containsDisc = function(n,r){ + return this.a <= n-r && n+r <= this.b + } + vec2.prototype.clamp = function(n){ + return clamp(n, this.a, this.b) + } + vec2.prototype.clampDisc = function(n,r){ + return clamp(n, this.a+r, this.b-r) + } + vec2.prototype.intersects = function(v){ + if (this.a < v.a) { + return (v.a < this.b && this.b <= v.b) || (this.a < v.b && v.b <= this.b) + } + else if (this.a == v.a) { + return true + } + else if (this.a > v.a) { + return (this.a < v.b && v.b <= this.b) || (v.a < this.b && this.b <= v.b) + } + } + vec2.prototype.union = function(v){ + if (this.intersects(v)) { + return new vec2( min(this.a,v.a), max(this.b, v.b) ) + } + } + vec2.prototype.intersection = function(v){ + if (this.intersects(v)) { + return new vec2( max(this.a,v.a), min(this.b, v.b) ) + } + } + vec2.prototype.toString = function(){ + return "[" + ~~this.a + " " + ~~this.b + "]" + } + vec2.prototype.serialize = function(){ + return [ ~~this.a, ~~this.b ] + } + vec2.prototype.quantize = function(n){ + n = n || 10 + this.a = quantize(this.a, n) + this.b = quantize(this.b, n) + } + + if ('window' in this) { + window.vec2 = vec2 + } + else if ('module' in this) { + module.exports = vec2 + } + +})()
\ No newline at end of file |
