Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / JU / M34.js
1 Clazz.declarePackage ("JU");
2 Clazz.load (null, "JU.M34", ["java.lang.ArrayIndexOutOfBoundsException"], function () {
3 c$ = Clazz.decorateAsClass (function () {
4 this.m00 = 0;
5 this.m01 = 0;
6 this.m02 = 0;
7 this.m10 = 0;
8 this.m11 = 0;
9 this.m12 = 0;
10 this.m20 = 0;
11 this.m21 = 0;
12 this.m22 = 0;
13 Clazz.instantialize (this, arguments);
14 }, JU, "M34");
15 Clazz.defineMethod (c$, "setAA33", 
16 function (a) {
17 var x = a.x;
18 var y = a.y;
19 var z = a.z;
20 var angle = a.angle;
21 var n = Math.sqrt (x * x + y * y + z * z);
22 n = 1 / n;
23 x *= n;
24 y *= n;
25 z *= n;
26 var c = Math.cos (angle);
27 var s = Math.sin (angle);
28 var omc = 1.0 - c;
29 this.m00 = (c + x * x * omc);
30 this.m11 = (c + y * y * omc);
31 this.m22 = (c + z * z * omc);
32 var tmp1 = x * y * omc;
33 var tmp2 = z * s;
34 this.m01 = (tmp1 - tmp2);
35 this.m10 = (tmp1 + tmp2);
36 tmp1 = x * z * omc;
37 tmp2 = y * s;
38 this.m02 = (tmp1 + tmp2);
39 this.m20 = (tmp1 - tmp2);
40 tmp1 = y * z * omc;
41 tmp2 = x * s;
42 this.m12 = (tmp1 - tmp2);
43 this.m21 = (tmp1 + tmp2);
44 }, "JU.A4");
45 Clazz.defineMethod (c$, "rotate", 
46 function (t) {
47 this.rotate2 (t, t);
48 }, "JU.T3");
49 Clazz.defineMethod (c$, "rotate2", 
50 function (t, result) {
51 result.set (this.m00 * t.x + this.m01 * t.y + this.m02 * t.z, this.m10 * t.x + this.m11 * t.y + this.m12 * t.z, this.m20 * t.x + this.m21 * t.y + this.m22 * t.z);
52 }, "JU.T3,JU.T3");
53 Clazz.defineMethod (c$, "setM33", 
54 function (m1) {
55 this.m00 = m1.m00;
56 this.m01 = m1.m01;
57 this.m02 = m1.m02;
58 this.m10 = m1.m10;
59 this.m11 = m1.m11;
60 this.m12 = m1.m12;
61 this.m20 = m1.m20;
62 this.m21 = m1.m21;
63 this.m22 = m1.m22;
64 }, "JU.M34");
65 Clazz.defineMethod (c$, "clear33", 
66 function () {
67 this.m00 = this.m01 = this.m02 = this.m10 = this.m11 = this.m12 = this.m20 = this.m21 = this.m22 = 0.0;
68 });
69 Clazz.defineMethod (c$, "set33", 
70 function (row, col, v) {
71 switch (row) {
72 case 0:
73 switch (col) {
74 case 0:
75 this.m00 = v;
76 return;
77 case 1:
78 this.m01 = v;
79 return;
80 case 2:
81 this.m02 = v;
82 return;
83 }
84 break;
85 case 1:
86 switch (col) {
87 case 0:
88 this.m10 = v;
89 return;
90 case 1:
91 this.m11 = v;
92 return;
93 case 2:
94 this.m12 = v;
95 return;
96 }
97 break;
98 case 2:
99 switch (col) {
100 case 0:
101 this.m20 = v;
102 return;
103 case 1:
104 this.m21 = v;
105 return;
106 case 2:
107 this.m22 = v;
108 return;
109 }
110 break;
111 }
112 this.err ();
113 }, "~N,~N,~N");
114 Clazz.defineMethod (c$, "get33", 
115 function (row, col) {
116 switch (row) {
117 case 0:
118 switch (col) {
119 case 0:
120 return this.m00;
121 case 1:
122 return this.m01;
123 case 2:
124 return this.m02;
125 }
126 break;
127 case 1:
128 switch (col) {
129 case 0:
130 return this.m10;
131 case 1:
132 return this.m11;
133 case 2:
134 return this.m12;
135 }
136 break;
137 case 2:
138 switch (col) {
139 case 0:
140 return this.m20;
141 case 1:
142 return this.m21;
143 case 2:
144 return this.m22;
145 }
146 break;
147 }
148 this.err ();
149 return 0;
150 }, "~N,~N");
151 Clazz.defineMethod (c$, "setRow33", 
152 function (row, v) {
153 switch (row) {
154 case 0:
155 this.m00 = v[0];
156 this.m01 = v[1];
157 this.m02 = v[2];
158 return;
159 case 1:
160 this.m10 = v[0];
161 this.m11 = v[1];
162 this.m12 = v[2];
163 return;
164 case 2:
165 this.m20 = v[0];
166 this.m21 = v[1];
167 this.m22 = v[2];
168 return;
169 default:
170 this.err ();
171 }
172 }, "~N,~A");
173 Clazz.defineMethod (c$, "getRow33", 
174 function (row, v) {
175 switch (row) {
176 case 0:
177 v[0] = this.m00;
178 v[1] = this.m01;
179 v[2] = this.m02;
180 return;
181 case 1:
182 v[0] = this.m10;
183 v[1] = this.m11;
184 v[2] = this.m12;
185 return;
186 case 2:
187 v[0] = this.m20;
188 v[1] = this.m21;
189 v[2] = this.m22;
190 return;
191 }
192 this.err ();
193 }, "~N,~A");
194 Clazz.defineMethod (c$, "setColumn33", 
195 function (column, v) {
196 switch (column) {
197 case 0:
198 this.m00 = v[0];
199 this.m10 = v[1];
200 this.m20 = v[2];
201 break;
202 case 1:
203 this.m01 = v[0];
204 this.m11 = v[1];
205 this.m21 = v[2];
206 break;
207 case 2:
208 this.m02 = v[0];
209 this.m12 = v[1];
210 this.m22 = v[2];
211 break;
212 default:
213 this.err ();
214 }
215 }, "~N,~A");
216 Clazz.defineMethod (c$, "getColumn33", 
217 function (column, v) {
218 switch (column) {
219 case 0:
220 v[0] = this.m00;
221 v[1] = this.m10;
222 v[2] = this.m20;
223 break;
224 case 1:
225 v[0] = this.m01;
226 v[1] = this.m11;
227 v[2] = this.m21;
228 break;
229 case 2:
230 v[0] = this.m02;
231 v[1] = this.m12;
232 v[2] = this.m22;
233 break;
234 default:
235 this.err ();
236 }
237 }, "~N,~A");
238 Clazz.defineMethod (c$, "add33", 
239 function (m1) {
240 this.m00 += m1.m00;
241 this.m01 += m1.m01;
242 this.m02 += m1.m02;
243 this.m10 += m1.m10;
244 this.m11 += m1.m11;
245 this.m12 += m1.m12;
246 this.m20 += m1.m20;
247 this.m21 += m1.m21;
248 this.m22 += m1.m22;
249 }, "JU.M34");
250 Clazz.defineMethod (c$, "sub33", 
251 function (m1) {
252 this.m00 -= m1.m00;
253 this.m01 -= m1.m01;
254 this.m02 -= m1.m02;
255 this.m10 -= m1.m10;
256 this.m11 -= m1.m11;
257 this.m12 -= m1.m12;
258 this.m20 -= m1.m20;
259 this.m21 -= m1.m21;
260 this.m22 -= m1.m22;
261 }, "JU.M34");
262 Clazz.defineMethod (c$, "mul33", 
263 function (x) {
264 this.m00 *= x;
265 this.m01 *= x;
266 this.m02 *= x;
267 this.m10 *= x;
268 this.m11 *= x;
269 this.m12 *= x;
270 this.m20 *= x;
271 this.m21 *= x;
272 this.m22 *= x;
273 }, "~N");
274 Clazz.defineMethod (c$, "transpose33", 
275 function () {
276 var tmp = this.m01;
277 this.m01 = this.m10;
278 this.m10 = tmp;
279 tmp = this.m02;
280 this.m02 = this.m20;
281 this.m20 = tmp;
282 tmp = this.m12;
283 this.m12 = this.m21;
284 this.m21 = tmp;
285 });
286 Clazz.defineMethod (c$, "setXRot", 
287 function (angle) {
288 var c = Math.cos (angle);
289 var s = Math.sin (angle);
290 this.m00 = 1.0;
291 this.m01 = 0.0;
292 this.m02 = 0.0;
293 this.m10 = 0.0;
294 this.m11 = c;
295 this.m12 = -s;
296 this.m20 = 0.0;
297 this.m21 = s;
298 this.m22 = c;
299 }, "~N");
300 Clazz.defineMethod (c$, "setYRot", 
301 function (angle) {
302 var c = Math.cos (angle);
303 var s = Math.sin (angle);
304 this.m00 = c;
305 this.m01 = 0.0;
306 this.m02 = s;
307 this.m10 = 0.0;
308 this.m11 = 1.0;
309 this.m12 = 0.0;
310 this.m20 = -s;
311 this.m21 = 0.0;
312 this.m22 = c;
313 }, "~N");
314 Clazz.defineMethod (c$, "setZRot", 
315 function (angle) {
316 var c = Math.cos (angle);
317 var s = Math.sin (angle);
318 this.m00 = c;
319 this.m01 = -s;
320 this.m02 = 0.0;
321 this.m10 = s;
322 this.m11 = c;
323 this.m12 = 0.0;
324 this.m20 = 0.0;
325 this.m21 = 0.0;
326 this.m22 = 1.0;
327 }, "~N");
328 Clazz.defineMethod (c$, "determinant3", 
329 function () {
330 return this.m00 * (this.m11 * this.m22 - this.m21 * this.m12) - this.m01 * (this.m10 * this.m22 - this.m20 * this.m12) + this.m02 * (this.m10 * this.m21 - this.m20 * this.m11);
331 });
332 Clazz.defineMethod (c$, "err", 
333 function () {
334 throw  new ArrayIndexOutOfBoundsException ("matrix column/row out of bounds");
335 });
336 });