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