import javax.swing.*; import java.awt.*; import java.util.*; import java.text.*; public class GreatCircle extends JApplet { public void init () { DecimalFormat d1, d2; d1 = new DecimalFormat ("0.0"); d2 = new DecimalFormat ("0.00"); double latitude1, longitude1, latitude2, longitude2; double degreesDistance, distance; final double RADIUS=6372.8; //assuming spherical Earth StringTokenizer twoDoubles; String input; input = JOptionPane.showInputDialog("Point 1 latitude and longitude in degrees (negative for South and West)"); twoDoubles = new StringTokenizer(input); latitude1 = Double.parseDouble(twoDoubles.nextToken()); longitude1 = Double.parseDouble(twoDoubles.nextToken()); input = JOptionPane.showInputDialog("Point 2 latitude and longitude in degrees (negative for South and West)"); twoDoubles = new StringTokenizer(input); latitude2 = Double.parseDouble(twoDoubles.nextToken()); longitude2 = Double.parseDouble(twoDoubles.nextToken()); degreesDistance = Math.toDegrees(Math.acos( Math.sin(Math.toRadians(latitude1))*Math.sin(Math.toRadians(latitude2)) + Math.cos(Math.toRadians(latitude1))*Math.cos(Math.toRadians(latitude2))* Math.cos(Math.toRadians(Math.abs(longitude1-longitude2))))); distance = RADIUS * Math.toRadians(degreesDistance); JOptionPane.showMessageDialog(null, "Distance between "+latitude1+","+longitude1+" and "+ latitude2+","+longitude2+"\n"+ d1.format(degreesDistance)+"\u00B0 "+ d1.format(distance)+" km "+d1.format(distance*.6214)+" mi"); } }