snapsvg
Version:
JavaScript Vector Library
75 lines (74 loc) • 1.75 kB
JavaScript
/**
* @object Vector4
* @author Matthew Wagerfield
*/
FSS.Vector4 = {
create: function(x, y, z, w) {
var vector = new FSS.Array(4);
this.set(vector, x, y, z);
return vector;
},
set: function(target, x, y, z, w) {
target[0] = x || 0;
target[1] = y || 0;
target[2] = z || 0;
target[3] = w || 0;
return this;
},
setX: function(target, x) {
target[0] = x || 0;
return this;
},
setY: function(target, y) {
target[1] = y || 0;
return this;
},
setZ: function(target, z) {
target[2] = z || 0;
return this;
},
setW: function(target, w) {
target[3] = w || 0;
return this;
},
add: function(target, a) {
target[0] += a[0];
target[1] += a[1];
target[2] += a[2];
target[3] += a[3];
return this;
},
multiplyVectors: function(target, a, b) {
target[0] = a[0] * b[0];
target[1] = a[1] * b[1];
target[2] = a[2] * b[2];
target[3] = a[3] * b[3];
return this;
},
multiplyScalar: function(target, s) {
target[0] *= s;
target[1] *= s;
target[2] *= s;
target[3] *= s;
return this;
},
min: function(target, value) {
if (target[0] < value) { target[0] = value; }
if (target[1] < value) { target[1] = value; }
if (target[2] < value) { target[2] = value; }
if (target[3] < value) { target[3] = value; }
return this;
},
max: function(target, value) {
if (target[0] > value) { target[0] = value; }
if (target[1] > value) { target[1] = value; }
if (target[2] > value) { target[2] = value; }
if (target[3] > value) { target[3] = value; }
return this;
},
clamp: function(target, min, max) {
this.min(target, min);
this.max(target, max);
return this;
}
};