1 Clazz.declarePackage ("JU");
\r
2 Clazz.load (["JU.M34"], "JU.M3", ["JU.T3"], function () {
\r
3 c$ = Clazz.declareType (JU, "M3", JU.M34, java.io.Serializable);
\r
4 c$.newA9 = Clazz.defineMethod (c$, "newA9",
\r
6 var m = new JU.M3 ();
\r
10 c$.newM3 = Clazz.defineMethod (c$, "newM3",
\r
12 var m = new JU.M3 ();
\r
27 Clazz.defineMethod (c$, "setScale",
\r
30 this.m00 = this.m11 = this.m22 = scale;
\r
32 Clazz.defineMethod (c$, "setM3",
\r
36 Clazz.defineMethod (c$, "setA",
\r
48 Clazz.defineMethod (c$, "setElement",
\r
49 function (row, col, v) {
\r
50 this.set33 (row, col, v);
\r
52 Clazz.defineMethod (c$, "getElement",
\r
53 function (row, col) {
\r
54 return this.get33 (row, col);
\r
56 Clazz.defineMethod (c$, "setRow",
\r
57 function (row, x, y, z) {
\r
78 Clazz.defineMethod (c$, "setRowV",
\r
100 Clazz.defineMethod (c$, "setRowA",
\r
101 function (row, v) {
\r
102 this.setRow33 (row, v);
\r
104 Clazz.overrideMethod (c$, "getRow",
\r
105 function (row, v) {
\r
106 this.getRow33 (row, v);
\r
108 Clazz.defineMethod (c$, "setColumn3",
\r
109 function (column, x, y, z) {
\r
130 Clazz.defineMethod (c$, "setColumnV",
\r
131 function (column, v) {
\r
152 Clazz.defineMethod (c$, "getColumnV",
\r
153 function (column, v) {
\r
174 Clazz.defineMethod (c$, "setColumnA",
\r
175 function (column, v) {
\r
176 this.setColumn33 (column, v);
\r
178 Clazz.defineMethod (c$, "getColumn",
\r
179 function (column, v) {
\r
180 this.getColumn33 (column, v);
\r
182 Clazz.defineMethod (c$, "add",
\r
186 Clazz.defineMethod (c$, "sub",
\r
190 Clazz.defineMethod (c$, "transpose",
\r
192 this.transpose33 ();
\r
194 Clazz.defineMethod (c$, "transposeM",
\r
197 this.transpose33 ();
\r
199 Clazz.defineMethod (c$, "invertM",
\r
204 Clazz.defineMethod (c$, "invert",
\r
206 var s = this.determinant3 ();
\r
207 if (s == 0.0) return;
\r
209 this.set9 (this.m11 * this.m22 - this.m12 * this.m21, this.m02 * this.m21 - this.m01 * this.m22, this.m01 * this.m12 - this.m02 * this.m11, this.m12 * this.m20 - this.m10 * this.m22, this.m00 * this.m22 - this.m02 * this.m20, this.m02 * this.m10 - this.m00 * this.m12, this.m10 * this.m21 - this.m11 * this.m20, this.m01 * this.m20 - this.m00 * this.m21, this.m00 * this.m11 - this.m01 * this.m10);
\r
212 Clazz.defineMethod (c$, "setAsXRotation",
\r
214 this.setXRot (angle);
\r
217 Clazz.defineMethod (c$, "setAsYRotation",
\r
219 this.setYRot (angle);
\r
222 Clazz.defineMethod (c$, "setAsZRotation",
\r
224 this.setZRot (angle);
\r
227 Clazz.defineMethod (c$, "scale",
\r
228 function (scalar) {
\r
229 this.mul33 (scalar);
\r
231 Clazz.defineMethod (c$, "mul",
\r
233 this.mul2 (this, m1);
\r
235 Clazz.defineMethod (c$, "mul2",
\r
236 function (m1, m2) {
\r
237 this.set9 (m1.m00 * m2.m00 + m1.m01 * m2.m10 + m1.m02 * m2.m20, m1.m00 * m2.m01 + m1.m01 * m2.m11 + m1.m02 * m2.m21, m1.m00 * m2.m02 + m1.m01 * m2.m12 + m1.m02 * m2.m22, m1.m10 * m2.m00 + m1.m11 * m2.m10 + m1.m12 * m2.m20, m1.m10 * m2.m01 + m1.m11 * m2.m11 + m1.m12 * m2.m21, m1.m10 * m2.m02 + m1.m11 * m2.m12 + m1.m12 * m2.m22, m1.m20 * m2.m00 + m1.m21 * m2.m10 + m1.m22 * m2.m20, m1.m20 * m2.m01 + m1.m21 * m2.m11 + m1.m22 * m2.m21, m1.m20 * m2.m02 + m1.m21 * m2.m12 + m1.m22 * m2.m22);
\r
239 Clazz.overrideMethod (c$, "equals",
\r
241 if (!(Clazz.instanceOf (o, JU.M3))) return false;
\r
243 return this.m00 == m.m00 && this.m01 == m.m01 && this.m02 == m.m02 && this.m10 == m.m10 && this.m11 == m.m11 && this.m12 == m.m12 && this.m20 == m.m20 && this.m21 == m.m21 && this.m22 == m.m22;
\r
245 Clazz.overrideMethod (c$, "hashCode",
\r
247 return JU.T3.floatToIntBits0 (this.m00) ^ JU.T3.floatToIntBits0 (this.m01) ^ JU.T3.floatToIntBits0 (this.m02) ^ JU.T3.floatToIntBits0 (this.m10) ^ JU.T3.floatToIntBits0 (this.m11) ^ JU.T3.floatToIntBits0 (this.m12) ^ JU.T3.floatToIntBits0 (this.m20) ^ JU.T3.floatToIntBits0 (this.m21) ^ JU.T3.floatToIntBits0 (this.m22);
\r
249 Clazz.defineMethod (c$, "setZero",
\r
253 Clazz.defineMethod (c$, "set9",
\r
254 function (m00, m01, m02, m10, m11, m12, m20, m21, m22) {
\r
264 }, "~N,~N,~N,~N,~N,~N,~N,~N,~N");
\r
265 Clazz.overrideMethod (c$, "toString",
\r
267 return "[\n [" + this.m00 + "\t" + this.m01 + "\t" + this.m02 + "]" + "\n [" + this.m10 + "\t" + this.m11 + "\t" + this.m12 + "]" + "\n [" + this.m20 + "\t" + this.m21 + "\t" + this.m22 + "] ]";
\r
269 Clazz.defineMethod (c$, "setAA",
\r
274 Clazz.defineMethod (c$, "setAsBallRotation",
\r
275 function (responseFactor, dx, dy) {
\r
276 var r = Math.sqrt (dx * dx + dy * dy);
\r
277 var th = r * responseFactor;
\r
281 }var c = Math.cos (th);
\r
282 var s = Math.sin (th);
\r
286 this.m00 = 1 + c1 * nx * nx;
\r
287 this.m01 = this.m10 = c1 * nx * ny;
\r
288 this.m20 = -(this.m02 = s * nx);
\r
289 this.m11 = 1 + c1 * ny * ny;
\r
290 this.m21 = -(this.m12 = s * ny);
\r
294 Clazz.defineMethod (c$, "isRotation",
\r
296 return (Math.abs (this.determinant3 () - 1) < 0.001);
\r