/****************************************************************************** * Created by Kenneth A. Lee (Ken.Lee@KennethLee.org) * * You may use this code in any project as long as credit is given to Kenneth Lee. * * Copyright 2003, All Rights Reserved * ******************************************************************************/ import java.applet.*; import java.lang.Math; public class GreatCircle extends Applet { public double ALatHours; public double ALatMinutes; public double ALatSeconds; public double ALongHours; public double ALongMinutes; public double ALongSeconds; public double BLatHours; public double BLatMinutes; public double BLatSeconds; public double BLongHours; public double BLongMinutes; public double BLongSeconds; public double l1; public double n1; public double l2; public double n2; public double c; public double a; public double d; public double r; public String sTest; /* * Default Constructor */ public GreatCircle() {} /* * Init Method for applet */ public void init() { ALatHours = 0.0D; ALatMinutes = 0.0D; ALatSeconds = 0.0D; ALongHours = 0.0D; ALongMinutes = 0.0D; ALongSeconds = 0.0D; BLatHours = 0.0D; BLatMinutes = 0.0D; BLatSeconds = 0.0D; BLongHours = 0.0D; BLongMinutes = 0.0D; BLongSeconds = 0.0D; l1 = 0.0D; n1 = 0.0D; l2 = 0.0D; n2 = 0.0D; c = 0.0D; a = 0.0D; d = 0.0D; r = 3963.0D; } /* * Method that solves problem */ public void solveit() { l1 = ALatHours + ALatMinutes/60.0 + ALatSeconds/3600.0; n1 = ALongHours + ALongMinutes/60.0 + ALongSeconds/3600.0; l2 = BLatHours + BLatMinutes/60.0 + BLatSeconds/3600.0; n2 = BLongHours + BLongMinutes/60.0 + BLongSeconds/3600.0; // Convert to radians l1 = l1*Math.PI/180; n1 = n1*Math.PI/180; l2 = l2*Math.PI/180; n2 = n2*Math.PI/180; c = ((Math.sin(l1))*(Math.sin(l2))) + ((Math.cos(l1))*(Math.cos(l2))*(Math.cos(n2 - n1))); a = Math.acos(c); // in radians d = this.a * r; } /* * Getters */ public String getDistance() { // return Double.toString(solveit()); // double junk = solveit(); // return "l1:" + l1 + " n1:" + n1 + " l2:" + l2 + " n2:" + n2 + " c:" + c + " a:" + a + " d:" + d + " r:" + r; // return String.valueOf(solveit()); solveit(); return String.valueOf(d); } public String getALatHours() { return String.valueOf(ALatHours); } public String getALatMinutes() { return String.valueOf(ALatMinutes); } public String getALatSeconds() { return String.valueOf(ALatSeconds); } public String getALongHours() { return String.valueOf(ALongHours); } public String getALongMinutes() { return String.valueOf(ALongMinutes); } public String getALongSeconds() { return String.valueOf(ALongSeconds); } public String getBLatHours() { return String.valueOf(BLatHours); } public String getBLatMinutes() { return String.valueOf(BLatMinutes); } public String getBLatSeconds() { return String.valueOf(BLatSeconds); } public String getBLongHours() { return String.valueOf(BLongHours); } public String getBLongMinutes() { return String.valueOf(BLongMinutes); } public String getBLongSeconds() { return String.valueOf(BLongSeconds); } public String getl1() { return String.valueOf(l1); } public String getn1() { return String.valueOf(n1); } public String getl2() { return String.valueOf(l2); } public String getn2() { return String.valueOf(n2); } public String getc() { return String.valueOf(c); } public String geta() { return String.valueOf(a); } public String getd() { return String.valueOf(d); } public String getr() { return String.valueOf(r); } /* * Setters - Type Float is received from javascript. */ public void setALatHours(double bValue) { ALatHours = bValue; } public void setALatHours(float bValue) { ALatHours = (double) bValue; } public void setALatMinutes(double bValue) { ALatMinutes = bValue; } public void setALatMinutes(float bValue) { ALatMinutes = (double) bValue; } public void setALatSeconds(double bValue) { ALatSeconds = bValue; } public void setALatSeconds(float bValue) { ALatSeconds = (double) bValue; } public void setALongHours(double bValue) { ALongHours = bValue; } public void setALongHours(float bValue) { ALongHours = (double) bValue; } public void setALongMinutes(double bValue) { ALongMinutes = bValue; } public void setALongMinutes(float bValue) { ALongMinutes = (double) bValue; } public void setALongSeconds(double bValue) { ALongSeconds = bValue; } public void setALongSeconds(float bValue) { ALongSeconds = (double) bValue; } public void setBLatHours(double bValue) { BLatHours = bValue; } public void setBLatHours(float bValue) { BLatHours = (double) bValue; } public void setBLatMinutes(double bValue) { BLatMinutes = bValue; } public void setBLatMinutes(float bValue) { BLatMinutes = (double) bValue; } public void setBLatSeconds(double bValue) { BLatSeconds = bValue; } public void setBLatSeconds(float bValue) { BLatSeconds = (double) bValue; } public void setBLongHours(double bValue) { BLongHours = bValue; } public void setBLongHours(float bValue) { BLongHours = (double) bValue; } public void setBLongMinutes(double bValue) { BLongMinutes = bValue; } public void setBLongMinutes(float bValue) { BLongMinutes = (double) bValue; } public void setBLongSeconds(double bValue) { BLongSeconds = bValue; } public void setBLongSeconds(float bValue) { BLongSeconds = (double) bValue; } /* * Testing method */ public static void main(String[] args) { GreatCircle gc = new GreatCircle(); gc.init(); gc.ALatHours = 42; gc.ALongHours = 87; gc.ALongMinutes = 55; gc.BLatHours = 21; gc.BLatMinutes = 20; gc.BLongHours = 157; gc.BLongMinutes = 55; gc.solveit(); System.out.println("Total distance = " + gc.d); } }