X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosGreatCircle.java;h=f2c1783ddda69ac9509b7c2574fc78a48e7f5350;hb=7175774c4f60ed3efd54417f2035b50ea0108c7b;hp=4782c34d34d858ed6fd361594ae69befb1853120;hpb=3871b9ac036e3adfa1da089245fc7973b268c921;p=fw%2Faltos diff --git a/altoslib/AltosGreatCircle.java b/altoslib/AltosGreatCircle.java index 4782c34d..f2c1783d 100644 --- a/altoslib/AltosGreatCircle.java +++ b/altoslib/AltosGreatCircle.java @@ -15,11 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_4; +package org.altusmetrum.altoslib_11; import java.lang.Math; +import java.io.*; -public class AltosGreatCircle implements Cloneable { +public class AltosGreatCircle implements Cloneable, AltosJsonable { public double distance; public double bearing; public double range; @@ -27,8 +28,8 @@ public class AltosGreatCircle implements Cloneable { double sqr(double a) { return a * a; } - static final double rad = Math.PI / 180; - static final double earth_radius = 6371.2 * 1000; /* in meters */ + public static final double rad = Math.PI / 180; + public static final double earth_radius = 6371.2 * 1000; /* in meters */ public static final int BEARING_LONG = AltosConvert.BEARING_LONG; public static final int BEARING_SHORT = AltosConvert.BEARING_SHORT; @@ -102,4 +103,31 @@ public class AltosGreatCircle implements Cloneable { range = 0; elevation = 0; } + + public AltosJson json() { + AltosJson j = new AltosJson(); + + j.put("distance", distance); + j.put("bearing", bearing); + j.put("range", range); + j.put("elevation", elevation); + + return j; + } + + public AltosGreatCircle(AltosJson j) { + this(); + + distance = j.get_double("distance", distance); + bearing = j.get_double("bearing", bearing); + range = j.get_double("range", range); + elevation = j.get_double("elevation", elevation); + } + + public static AltosGreatCircle fromJson(AltosJson j, AltosGreatCircle def) { + if (j == null) + return def; + + return new AltosGreatCircle(j); + } }