aboutsummaryrefslogtreecommitdiff
path: root/js/helper-classes/RDGE/src/core/script/math/mat4.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/helper-classes/RDGE/src/core/script/math/mat4.js')
-rwxr-xr-xjs/helper-classes/RDGE/src/core/script/math/mat4.js1085
1 files changed, 538 insertions, 547 deletions
diff --git a/js/helper-classes/RDGE/src/core/script/math/mat4.js b/js/helper-classes/RDGE/src/core/script/math/mat4.js
index fab57732..239c646a 100755
--- a/js/helper-classes/RDGE/src/core/script/math/mat4.js
+++ b/js/helper-classes/RDGE/src/core/script/math/mat4.js
@@ -4,17 +4,7 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
4(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. 4(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
5</copyright> */ 5</copyright> */
6 6
7
8float3 = function() {
9 data = [3];
10}
11
12float4 = function() {
13 data = [4];
14}
15
16/** 7/**
17* mat4 = {}
18* This library contains functions for operating on 4x4 matrices. Any JS array 8* This library contains functions for operating on 4x4 matrices. Any JS array
19* containing at least 16 numeric components can represent a 4x4 matrix. 9* containing at least 16 numeric components can represent a 4x4 matrix.
20* 10*
@@ -31,313 +21,314 @@ float4 = function() {
31* y0, y1, y2, y3, 21* y0, y1, y2, y3,
32* z0, z1, z2, z3, 22* z0, z1, z2, z3,
33* w0, w1, w2, w3 ]; 23* w0, w1, w2, w3 ];
34* The translation components of a tranformation matrix would be stored in 24* The translation components of a transformation matrix would be stored in
35* w0, w1, w2, or at indices 12, 13, and 14 of the array, as is consistent 25* w0, w1, w2, or at indices 12, 13, and 14 of the array, as is consistent
36* with opengl. 26* with OpenGL.
37*/ 27*/
38mat4 = {} 28// RDGE namespaces
29var RDGE = RDGE || {};
30RDGE.mat4 = {};
39 31
40/** 32/**
41* mat4.string 33* RDGE.mat4.string
42*/ 34*/
43mat4.string = function(m) { 35RDGE.mat4.string = function (m) {
44 var out = "{ "; 36 var out = "{ ";
45 out += m[0] + ", " + m[1] + ", " + m[2] + ", " + m[3] + ", "; 37 out += m[0] + ", " + m[1] + ", " + m[2] + ", " + m[3] + ", ";
46 out += m[4] + ", " + m[5] + ", " + m[6] + ", " + m[7] + ", "; 38 out += m[4] + ", " + m[5] + ", " + m[6] + ", " + m[7] + ", ";
47 out += m[8] + ", " + m[9] + ", " + m[10] + ", " + m[11] + ", "; 39 out += m[8] + ", " + m[9] + ", " + m[10] + ", " + m[11] + ", ";
48 out += m[12] + ", " + m[13] + ", " + m[14] + ", " + m[15] + " }"; 40 out += m[12] + ", " + m[13] + ", " + m[14] + ", " + m[15] + " }";
49 return out; 41 return out;
50} 42};
51 43
52mat4.toCSSString = function(m, conversionConstant) 44RDGE.mat4.toCSSString = function (m, conversionConstant) {
53{
54 var cc = 10.0; 45 var cc = 10.0;
55 46
56 if (conversionConstant) 47 if (conversionConstant)
57 cc = conversionConstant; 48 cc = conversionConstant;
58 49
59 var out = "matrix3d("; 50 var out = "matrix3d(";
60 out += m[0].toFixed(10) + ", " + m[1].toFixed(10) + ", " + m[2].toFixed(10) + ", " + m[3].toFixed(10) + ", "; 51 out += m[0].toFixed(10) + ", " + m[1].toFixed(10) + ", " + m[2].toFixed(10) + ", " + m[3].toFixed(10) + ", ";
61 out += m[4].toFixed(10) + ", " + m[5].toFixed(10) + ", " + m[6].toFixed(10) + ", " + m[7].toFixed(10) + ", "; 52 out += m[4].toFixed(10) + ", " + m[5].toFixed(10) + ", " + m[6].toFixed(10) + ", " + m[7].toFixed(10) + ", ";
62 out += m[8].toFixed(10) + ", " + m[9].toFixed(10) + ", " + m[10].toFixed(10) + ", " + m[11].toFixed(10) + ", "; 53 out += m[8].toFixed(10) + ", " + m[9].toFixed(10) + ", " + m[10].toFixed(10) + ", " + m[11].toFixed(10) + ", ";
63 out += m[12].toFixed(10)*cc + ", " + (600 - m[13].toFixed(10)*cc) + ", " + m[14].toFixed(10)*cc + ", " + m[15].toFixed(10) + ")"; 54 out += m[12].toFixed(10) * cc + ", " + (600 - m[13].toFixed(10) * cc) + ", " + m[14].toFixed(10) * cc + ", " + m[15].toFixed(10) + ")";
64 return out; 55 return out;
65} 56};
66 57
67/** 58/**
68* mat4.verify 59* RDGE.mat4.verify
69* This function is provided for debugging purposes only. It is not recommended 60* This function is provided for debugging purposes only. It is not recommended
70* to be used in performance critical areas of the code. 61* to be used in performance critical areas of the code.
71*/ 62*/
72mat4.verify = function(m) { 63RDGE.mat4.verify = function (m) {
73 if (m == undefined || m.length == undefined || m.length < 16) { 64 if (m == undefined || m.length == undefined || m.length < 16) {
74 return false; 65 return false;
75 } 66 }
76 var i = 16; 67 var i = 16;
77 while (i--) { 68 while (i--) {
78 if (typeof (m[i]) != "number") { 69 if (typeof (m[i]) != "number") {
79 return false; 70 return false;
80 } 71 }
81 } 72 }
82 return true; 73 return true;
83} 74};
84 75
85/** 76/**
86* mat4.copy 77* RDGE.mat4.copy
87*/ 78*/
88mat4.copy = function(m) { 79RDGE.mat4.copy = function (m) {
89 return [ m[0], m[1], m[2], m[3], 80 return [m[0], m[1], m[2], m[3],
90 m[4], m[5], m[6], m[7], 81 m[4], m[5], m[6], m[7],
91 m[8], m[9], m[10], m[11], 82 m[8], m[9], m[10], m[11],
92 m[12], m[13], m[14], m[15] ]; 83 m[12], m[13], m[14], m[15]];
93} 84};
94 85
95/** 86/**
96* mat4.inplace_copy 87* RDGE.mat4.inplace_copy
97*/ 88*/
98mat4.inplace_copy = function(dst, src) { 89RDGE.mat4.inplace_copy = function (dst, src) {
99 dst[0] = src[0]; 90 dst[0] = src[0];
100 dst[1] = src[1]; 91 dst[1] = src[1];
101 dst[2] = src[2]; 92 dst[2] = src[2];
102 dst[3] = src[3]; 93 dst[3] = src[3];
103 dst[4] = src[4]; 94 dst[4] = src[4];
104 dst[5] = src[5]; 95 dst[5] = src[5];
105 dst[6] = src[6]; 96 dst[6] = src[6];
106 dst[7] = src[7]; 97 dst[7] = src[7];
107 dst[8] = src[8]; 98 dst[8] = src[8];
108 dst[9] = src[9]; 99 dst[9] = src[9];
109 dst[10] = src[10]; 100 dst[10] = src[10];
110 dst[11] = src[11]; 101 dst[11] = src[11];
111 dst[12] = src[12]; 102 dst[12] = src[12];
112 dst[13] = src[13]; 103 dst[13] = src[13];
113 dst[14] = src[14]; 104 dst[14] = src[14];
114 dst[15] = src[15]; 105 dst[15] = src[15];
115} 106};
116 107
117/** 108/**
118* mat4.identity 109* RDGE.mat4.identity
119*/ 110*/
120mat4.identity = function() { 111RDGE.mat4.identity = function () {
121 return [ 1.0, 0.0, 0.0, 0.0, 112 return [1.0, 0.0, 0.0, 0.0,
122 0.0, 1.0, 0.0, 0.0, 113 0.0, 1.0, 0.0, 0.0,
123 0.0, 0.0, 1.0, 0.0, 114 0.0, 0.0, 1.0, 0.0,
124 0.0, 0.0, 0.0, 1.0 ]; 115 0.0, 0.0, 0.0, 1.0];
125} 116};
126 117
127/** 118/**
128* mat4.zero 119* RDGE.mat4.zero
129*/ 120*/
130mat4.zero = function() { 121RDGE.mat4.zero = function () {
131 return [ 0.0, 0.0, 0.0, 0.0, 122 return [0.0, 0.0, 0.0, 0.0,
132 0.0, 0.0, 0.0, 0.0, 123 0.0, 0.0, 0.0, 0.0,
133 0.0, 0.0, 0.0, 0.0, 124 0.0, 0.0, 0.0, 0.0,
134 0.0, 0.0, 0.0, 0.0 ]; 125 0.0, 0.0, 0.0, 0.0];
135} 126};
136 127
137/** 128/**
138* mat4.basis 129* RDGE.mat4.basis
139* description - construct a matrix with the given basis vectors. 130* description - construct a matrix with the given basis vectors.
140*/ 131*/
141mat4.basis = function( rowx, rowy, rowz, roww ) { 132RDGE.mat4.basis = function (rowx, rowy, rowz, roww) {
142 if( roww == null || roww == undefined ) { 133 if (roww == null || roww == undefined) {
143 return [ rowx[0], rowx[1], rowx[2], 0.0, 134 return [rowx[0], rowx[1], rowx[2], 0.0,
144 rowy[0], rowy[1], rowy[2], 0.0, 135 rowy[0], rowy[1], rowy[2], 0.0,
145 rowz[0], rowz[1], rowz[2], 0.0, 136 rowz[0], rowz[1], rowz[2], 0.0,
146 0, 0, 0, 1.0 ]; 137 0, 0, 0, 1.0];
147 } else { 138 } else {
148 return [ rowx[0], rowx[1], rowx[2], rowx.length == 4 ? rowx[3] : 0.0, 139 return [rowx[0], rowx[1], rowx[2], rowx.length == 4 ? rowx[3] : 0.0,
149 rowy[0], rowy[1], rowy[2], rowy.length == 4 ? rowy[3] : 0.0,