diff options
Diffstat (limited to 'public/assets/javascripts/rectangles/models/vec3.js')
| -rw-r--r-- | public/assets/javascripts/rectangles/models/vec3.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/public/assets/javascripts/rectangles/models/vec3.js b/public/assets/javascripts/rectangles/models/vec3.js new file mode 100644 index 0000000..4e00b0c --- /dev/null +++ b/public/assets/javascripts/rectangles/models/vec3.js @@ -0,0 +1,31 @@ +function vec3(a,b,c){ + this.a = a + this.b = b + this.c = c +} +vec3.prototype.add = function(v){ + this.a += v.a + this.b += v.b + this.c += v.c + return this +} +vec3.prototype.sub = function(v){ + this.a -= v.a + this.b -= v.b + this.c -= v.c + return this +} + +// input: mat4 projection matrix +vec3.prototype.apply_projection = function (m) { + var x = this.a, y = this.b, z = this.c; + + var e = m.elements; + var d = 1 / ( e[3] * x + e[7] * y + e[11] * z + e[15] ); // perspective divide + + this.x = ( e[0] * x + e[4] * y + e[8] * z + e[12] ) * d; + this.y = ( e[1] * x + e[5] * y + e[9] * z + e[13] ) * d; + this.z = ( e[2] * x + e[6] * y + e[10] * z + e[14] ) * d; + + return this; +} |
