1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- function Vec2(x, y) {
- this.x = x || 0;
- this.y = y || 0;
- return this;
- }
-
- Vec2.prototype.clone = function() {
- return new Vec2(this.x, this.y);
- }
-
- Vec2.prototype.length = function() {
- return Math.sqrt((this.x * this.x) + (this.y * this.y));
- }
-
- Vec2.prototype.set = function(vec) {
- this.x = vec.x;
- this.y = vec.y;
-
- return this;
- }
-
- Vec2.prototype.add = function(vec) {
- this.x += vec.x;
- this.y += vec.y;
-
- return this;
- }
-
- Vec2.prototype.sub = function(vec) {
- this.x -= vec.x;
- this.y -= vec.y;
-
- return this;
- }
-
- Vec2.prototype.scale = function(num) {
- this.x *= num;
- this.y *= num;
-
- return this;
- }
-
- Vec2.prototype.normalize = function() {
- var len = this.length();
-
- if (len === 0) {
- this.x = 1;
- this.y = 0;
- } else {
- this.scale(1 / len);
- }
-
- return this;
- }
-
- Vec2.prototype.rotate = function(rad) {
- var x = this.x;
- var y = this.y;
-
- this.x = x * Math.cos(rad) - y * Math.sin(rad);
- this.y = y * Math.cos(rad) + x * Math.sin(rad);
-
- return this;
- }
-
- Vec2.prototype.angle = function() {
- return Math.atan2(this.y, this.x);
- }
|