60 lines
1.4 KiB
JavaScript
60 lines
1.4 KiB
JavaScript
var Vector = function(_x, _y) {
|
|
this.x = _x || 1;
|
|
this.y = _y || 0;
|
|
this.setAngle = function(angle) {
|
|
var length = this.getLength();
|
|
this.x = Math.cos(angle) * length;
|
|
this.y = Math.sin(angle) * length;
|
|
}
|
|
this.getAngle = function() {
|
|
return Math.atan2(this.y, this.x);
|
|
}
|
|
this.setLength = function(length) {
|
|
var angle = this.getAngle();
|
|
this.x = Math.cos(angle) * length;
|
|
this.y = Math.sin(angle) * length;
|
|
}
|
|
this.getLength = function() {
|
|
return Math.sqrt(this.x * this.x + this.y * this.y);
|
|
}
|
|
this.add = function(v2) {
|
|
return {
|
|
x: this.x + v2.x,
|
|
y: this.y + v2.y
|
|
};
|
|
}
|
|
this.sub = function(v2) {
|
|
return {
|
|
x: this.x - v2.x,
|
|
y: this.y - v2.y
|
|
};
|
|
}
|
|
this.mult = function(val) {
|
|
return {
|
|
x: this.x * val,
|
|
y: this.y * val
|
|
};
|
|
}
|
|
this.divide = function(val) {
|
|
return {
|
|
x: this.x / val,
|
|
y: this.y / val
|
|
};
|
|
}
|
|
this.addTo = function(v2) {
|
|
this.x += v2.x;
|
|
this.y += v2.y;
|
|
}
|
|
this.subtractFrom = function(v2) {
|
|
this.x -= v2.x;
|
|
this.y -= v2.y;
|
|
}
|
|
this.multiplyBy = function(val) {
|
|
this.x *= val;
|
|
this.y *= val;
|
|
}
|
|
this.divideBy = function(val) {
|
|
this.x /= val;
|
|
this.y /= val;
|
|
}
|
|
}; |