Skip to content

Instantly share code, notes, and snippets.

@sabarjp
Created February 18, 2016 17:44
Show Gist options
  • Save sabarjp/b22853fa4d86c547ed98 to your computer and use it in GitHub Desktop.
Save sabarjp/b22853fa4d86c547ed98 to your computer and use it in GitHub Desktop.
js matrix math
function makeMatrixFromVec2(x, y) {
return [
x, 0, 0,
0, y, 0,
0, 0, 0
];
}
function makeVec2FromMatrix3(mat3) {
return {
x: mat3[0],
y: mat3[4]
};
}
function makeTranslation(tx, ty) {
return [
1, 0, 0,
0, 1, 0,
tx, ty, 1
];
}
function makeRotation(angleInRadians) {
var c = Math.cos(angleInRadians);
var s = Math.sin(angleInRadians);
return [
c, -s, 0,
s, c, 0,
0, 0, 1
];
}
function makeScale(sx, sy) {
return [
sx, 0, 0,
0, sy, 0,
0, 0, 1
];
}
function matrixMultiply(a, b) {
var a00 = a[0*3+0];
var a01 = a[0*3+1];
var a02 = a[0*3+2];
var a10 = a[1*3+0];
var a11 = a[1*3+1];
var a12 = a[1*3+2];
var a20 = a[2*3+0];
var a21 = a[2*3+1];
var a22 = a[2*3+2];
var b00 = b[0*3+0];
var b01 = b[0*3+1];
var b02 = b[0*3+2];
var b10 = b[1*3+0];
var b11 = b[1*3+1];
var b12 = b[1*3+2];
var b20 = b[2*3+0];
var b21 = b[2*3+1];
var b22 = b[2*3+2];
return [a00 * b00 + a01 * b10 + a02 * b20,
a00 * b01 + a01 * b11 + a02 * b21,
a00 * b02 + a01 * b12 + a02 * b22,
a10 * b00 + a11 * b10 + a12 * b20,
a10 * b01 + a11 * b11 + a12 * b21,
a10 * b02 + a11 * b12 + a12 * b22,
a20 * b00 + a21 * b10 + a22 * b20,
a20 * b01 + a21 * b11 + a22 * b21,
a20 * b02 + a21 * b12 + a22 * b22];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment