summaryrefslogtreecommitdiff
path: root/altoslib/AltosQuaternion.java
diff options
context:
space:
mode:
Diffstat (limited to 'altoslib/AltosQuaternion.java')
-rw-r--r--altoslib/AltosQuaternion.java22
1 files changed, 21 insertions, 1 deletions
diff --git a/altoslib/AltosQuaternion.java b/altoslib/AltosQuaternion.java
index 351685f8..af9eb475 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 AltosHashable {
double r; /* real bit */
double x, y, z; /* imaginary bits */
@@ -147,4 +147,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 AltosHashSet hashSet() {
+ AltosHashSet h = new AltosHashSet();
+
+ h.putDouble("r", r);
+ h.putDouble("x", x);
+ h.putDouble("y", y);
+ h.putDouble("z", z);
+ return h;
+ }
+
+ public AltosQuaternion(AltosHashSet h) {
+ if (h == null)
+ return;
+
+ r = h.getDouble("r", 1);
+ x = h.getDouble("x", 0);
+ y = h.getDouble("y", 0);
+ z = h.getDouble("z", 0);
+ }
}