Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- window.Matrix = {};
- Matrix.CreateScale = function(sX, sY, sZ)
- {
- arguments.length == 1 && (sY = sZ = sX);
- return [
- sX, 0, 0, 0,
- 0, sY, 0, 0,
- 0, 0, sZ, 0,
- 0, 0, 0, 1
- ];
- };
- Matrix.CreateTranslation = function(dX, dY, dZ)
- {
- arguments.length == 1 && (dY = dZ = dX);
- return [
- 1, 0, 0, 0,
- 0, 1, 0, 0,
- 0, 0, 1, 0,
- dX, dY, dZ, 1
- ];
- };
- Matrix.CreateRotationX = function(Ang)
- {
- var Cos = Math.cos(Ang);
- var Sin = Math.sin(Ang);
- return [
- 1, 0, 0, 0,
- 0, Cos, Sin, 0,
- 0, -Sin, Cos, 0,
- 0, 0, 0, 1
- ];
- };
- Matrix.CreateRotationY = function(Ang)
- {
- var Cos = Math.cos(Ang);
- var Sin = Math.sin(Ang);
- return [
- Cos, 0, -Sin, 0,
- 0, 1, 0, 0,
- Sin, 0, Cos, 0,
- 0, 0, 0, 1
- ];
- };
- Matrix.CreateRotationZ = function(Ang)
- {
- var Cos = Math.cos(Ang);
- var Sin = Math.sin(Ang);
- return [
- Cos, Sin, 0, 0,
- -Sin, Cos, 0, 0,
- 0, 0, 1, 0,
- 0, 0, 0, 1
- ];
- };
- Matrix.Mul = function(M2, M1)
- {
- var M3 = [];
- M3[0] = M1[0] * M2[0] + M1[1] * M2[4] + M1[2] * M2[8] + M1[3] * M2[12];
- M3[1] = M1[0] * M2[1] + M1[1] * M2[5] + M1[2] * M2[9] + M1[3] * M2[13];
- M3[2] = M1[0] * M2[2] + M1[1] * M2[6] + M1[2] * M2[10] + M1[3] * M2[14];
- M3[3] = M1[0] * M2[3] + M1[1] * M2[7] + M1[2] * M2[11] + M1[3] * M2[15];
- M3[4] = M1[4] * M2[0] + M1[5] * M2[4] + M1[6] * M2[8] + M1[7] * M2[12];
- M3[5] = M1[4] * M2[1] + M1[5] * M2[5] + M1[6] * M2[9] + M1[7] * M2[13];
- M3[6] = M1[4] * M2[2] + M1[5] * M2[6] + M1[6] * M2[10] + M1[7] * M2[14];
- M3[7] = M1[4] * M2[3] + M1[5] * M2[7] + M1[6] * M2[11] + M1[7] * M2[15];
- M3[8] = M1[8] * M2[0] + M1[9] * M2[4] + M1[10] * M2[8] + M1[11] * M2[12];
- M3[9] = M1[8] * M2[1] + M1[9] * M2[5] + M1[10] * M2[9] + M1[11] * M2[13];
- M3[10] = M1[8] * M2[2] + M1[9] * M2[6] + M1[10] * M2[10] + M1[11] * M2[14];
- M3[11] = M1[8] * M2[3] + M1[9] * M2[7] + M1[10] * M2[11] + M1[11] * M2[15];
- M3[12] = M1[12] * M2[0] + M1[13] * M2[4] + M1[14] * M2[8] + M1[15] * M2[12];
- M3[13] = M1[12] * M2[1] + M1[13] * M2[5] + M1[14] * M2[9] + M1[15] * M2[13];
- M3[14] = M1[12] * M2[2] + M1[13] * M2[6] + M1[14] * M2[10] + M1[15] * M2[14];
- M3[15] = M1[12] * M2[3] + M1[13] * M2[7] + M1[14] * M2[11] + M1[15] * M2[15];
- return M3;
- };
- Matrix.__defineGetter__("Identity", function()
- {
- return [
- 1, 0, 0, 0,
- 0, 1, 0, 0,
- 0, 0, 1, 0,
- 0, 0, 0, 1
- ];
- });
- Matrix.Transpose = function(M)
- {
- return [
- M[0], M[4], M[8], M[12],
- M[1], M[5], M[9], M[13],
- M[2], M[6], M[10], M[14],
- M[3], M[7], M[11], M[15]
- ];
- }
- Matrix.CreateLookAt = function(Position, Target, Up)
- {
- if(Position.Equals(Target))
- return Matrix.Identity;
- var zaxis = Position.Clone().Subtract(Target).Normalize();
- var xaxis = Up.Clone().Cross(zaxis).Normalize();
- var yaxis = zaxis.Clone().Cross(xaxis);
- var xdp = xaxis.Dot(Position);
- var ydp = yaxis.Dot(Position);
- var zdp = zaxis.Dot(Position);
- return [
- xaxis.X, yaxis.X, zaxis.X, 0,
- xaxis.Y, yaxis.Y, zaxis.Y, 0,
- xaxis.Z, yaxis.Z, zaxis.Z, 0,
- -xdp, -ydp, -zdp, 1
- ];
- };
- Matrix.CreatePerspectiveFieldOfView = function(Fov, AspectRatio, Near, Far)
- {
- var yScale = 1 / Math.tan(Fov / 2);
- var xScale = yScale / AspectRatio;
- return [
- xScale, 0, 0, 0,
- 0, yScale, 0, 0,
- 0, 0, Far/(Near-Far), -1,
- 0, 0, Near*Far/(Near-Far), 0
- ];
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement