X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosQuaternion.java;h=98c2fe51322851e5b7fb1e5b95723fc173f4655e;hb=8df6afe843e184e98e5d965cee3af562dfa30a3b;hp=351685f8c578708243f0f038962f1bb5177a5b3a;hpb=97adfff4cfb67c17a96f3ff46606b4e439422b01;p=fw%2Faltos diff --git a/altoslib/AltosQuaternion.java b/altoslib/AltosQuaternion.java index 351685f8..98c2fe51 100644 --- a/altoslib/AltosQuaternion.java +++ b/altoslib/AltosQuaternion.java @@ -17,7 +17,7 @@ package org.altusmetrum.altoslib_11; -public class AltosQuaternion { +public class AltosQuaternion implements AltosJsonable { double r; /* real bit */ double x, y, z; /* imaginary bits */ @@ -115,10 +115,17 @@ public class AltosQuaternion { } public AltosQuaternion(AltosQuaternion q) { - this.r = q.r; - this.x = q.x; - this.y = q.y; - this.z = q.z; + r = q.r; + x = q.x; + y = q.y; + z = q.z; + } + + public AltosQuaternion() { + r = 1; + x = 0; + y = 0; + z = 0; } static public AltosQuaternion vector(double x, double y, double z) { @@ -147,4 +154,24 @@ public class AltosQuaternion { c_x * s_y * c_z + s_x * c_y * s_z, c_x * c_y * s_z - s_x * s_y * c_z); } + + public AltosJson json() { + AltosJson j = new AltosJson(); + + j.put("r", r); + j.put("x", x); + j.put("y", y); + j.put("z", z); + return j; + } + + public AltosQuaternion(AltosJson j) { + if (j == null) + return; + + r = j.get_double("r", 1); + x = j.get_double("x", 0); + y = j.get_double("y", 0); + z = j.get_double("z", 0); + } }