1 Clazz.declarePackage ("JU");
\r
2 Clazz.load (["javajs.api.JSONEncodable"], "JU.A4", ["JU.T3"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
8 Clazz.instantialize (this, arguments);
\r
9 }, JU, "A4", null, [javajs.api.JSONEncodable, java.io.Serializable]);
\r
10 Clazz.makeConstructor (c$,
\r
14 c$.new4 = Clazz.defineMethod (c$, "new4",
\r
15 function (x, y, z, angle) {
\r
16 var a = new JU.A4 ();
\r
17 a.set4 (x, y, z, angle);
\r
20 c$.newAA = Clazz.defineMethod (c$, "newAA",
\r
22 var a = new JU.A4 ();
\r
23 a.set4 (a1.x, a1.y, a1.z, a1.angle);
\r
26 c$.newVA = Clazz.defineMethod (c$, "newVA",
\r
27 function (axis, angle) {
\r
28 var a = new JU.A4 ();
\r
29 a.setVA (axis, angle);
\r
32 Clazz.defineMethod (c$, "setVA",
\r
33 function (axis, angle) {
\r
39 Clazz.defineMethod (c$, "set4",
\r
40 function (x, y, z, angle) {
\r
46 Clazz.defineMethod (c$, "setAA",
\r
51 this.angle = a.angle;
\r
53 Clazz.defineMethod (c$, "setM",
\r
55 this.setFromMat (m1.m00, m1.m01, m1.m02, m1.m10, m1.m11, m1.m12, m1.m20, m1.m21, m1.m22);
\r
57 Clazz.defineMethod (c$, "setFromMat",
\r
58 function (m00, m01, m02, m10, m11, m12, m20, m21, m22) {
\r
59 var cos = (m00 + m11 + m22 - 1.0) * 0.5;
\r
60 this.x = (m21 - m12);
\r
61 this.y = (m02 - m20);
\r
62 this.z = (m10 - m01);
\r
63 var sin = 0.5 * Math.sqrt (this.x * this.x + this.y * this.y + this.z * this.z);
\r
64 if (sin == 0 && cos == 1) {
\r
65 this.x = this.y = 0;
\r
68 this.angle = Math.atan2 (sin, cos);
\r
69 }}, "~N,~N,~N,~N,~N,~N,~N,~N,~N");
\r
70 Clazz.overrideMethod (c$, "hashCode",
\r
72 return JU.T3.floatToIntBits0 (this.x) ^ JU.T3.floatToIntBits0 (this.y) ^ JU.T3.floatToIntBits0 (this.z) ^ JU.T3.floatToIntBits0 (this.angle);
\r
74 Clazz.overrideMethod (c$, "equals",
\r
76 if (!(Clazz.instanceOf (o, JU.A4))) return false;
\r
78 return this.x == a1.x && this.y == a1.y && this.z == a1.z && this.angle == a1.angle;
\r
80 Clazz.overrideMethod (c$, "toString",
\r
82 return "(" + this.x + ", " + this.y + ", " + this.z + ", " + this.angle + ")";
\r
84 Clazz.overrideMethod (c$, "toJSON",
\r
86 return "[" + this.x + "," + this.y + "," + this.z + "," + (this.angle * 180.0 / 3.141592653589793) + "]";
\r