Вы находитесь на странице: 1из 8

//Spherical law of cosines program

import TerminalIO.KeyboardReader;
import java.text.DecimalFormat;
class Calculations {
double HomeLattoDeg(int homelatdeg, int homelatmin) {
double homelat = 0;
homelat = homelatdeg*1. + (homelatmin/60.);
return homelat;
}
double HomeLongtoDeg(int homelongdeg, int homelongmin) {
double homelong = 0;
homelong = homelongdeg*1. + (homelongmin/60.);
return homelong;
}
double Lat1toDeg(int latdeg1, int latmin1) {
double lat1 = 0;
lat1 = latdeg1*1. + (latmin1/60.);
return lat1;
}
double Long1toDeg(int longdeg1, int longmin1) {
double lon1 = 0;
lon1 = longdeg1*1. + (longmin1/60.);
return lon1;
}
double Lat2toDeg(int latdeg2, int latmin2) {
double lat2 = 0;
lat2 = latdeg2*1. + (latmin2/60.);
return lat2;
}
double Long2toDeg(int longdeg2, int longmin2) {
double lon2 = 0;
lon2 = longdeg2*1. + (longmin2/60.);
return lon2;
}
double Lat3toDeg(int latdeg3, int latmin3) {
double lat3 = 0;
lat3 = latdeg3*1. + (latmin3/60.);
return lat3;

}
double Long3toDeg(int longdeg3, int longmin3) {
double lon3 = 0;
lon3 = longdeg3*1. + (longmin3/60.);
return lon3;
}
double A1(double homelat){
double aDeg, a;
aDeg = 90. - homelat;
a = Math.toRadians(aDeg);
return a;
}
double B1(double lat1) {
double bDeg, b;
bDeg = 90. - lat1;
b = Math.toRadians(bDeg);
return b;
}
double N1(double homelong, double long1) {
double nDeg, n;
nDeg = homelong - long1;
n = Math.toRadians(nDeg);
return n;
}
double A2(double lat1){
double aDeg, a;
aDeg = 90. - lat1;
a = Math.toRadians(aDeg);
return a;
}
double B2(double lat2) {
double bDeg, b;
bDeg = 90. - lat2;
b = Math.toRadians(bDeg);
return b;
}
double N2(double long1, double long2) {
double nDeg, n;
nDeg = long1 - long2;
n = Math.toRadians(nDeg);

return n;
}
double A3(double lat2){
double aDeg, a;
aDeg = 90. - lat2;
a = Math.toRadians(aDeg);
return a;
}
double B3(double lat3) {
double bDeg, b;
bDeg = 90. - lat3;
b = Math.toRadians(bDeg);
return b;
}
double N3(double long2, double long3) {
double nDeg, n;
nDeg = long2 - long3;
n = Math.toRadians(nDeg);
return n;
}
double A4(double lat3){
double aDeg, a;
aDeg = 90. - lat3;
a = Math.toRadians(aDeg);
return a;
}
double B4(double homelat) {
double bDeg, b;
bDeg = 90. - homelat;
b = Math.toRadians(bDeg);
return b;
}
double N4(double long3, double homelong) {
double nDeg, n;
nDeg = long3 - homelong;
n = Math.toRadians(nDeg);
return n;
}
double Dist1(double a1, double b1, double N1) {
double nRad1, n1, distance1;

nRad1 = Math.acos(((Math.cos(b1))*(Math.cos(a1)))+
((Math.sin(b1))*(Math.sin(a1))*(Math.cos(N1))));
n1 = Math.toDegrees(nRad1);
distance1 = (n1/360.)*2*3.14159*3960;
return distance1;
}
double Dist2(double a2, double b2, double N2) {
double nRad2, n2, distance2;
nRad2 = Math.acos(((Math.cos(b2))*(Math.cos(a2)))+
((Math.sin(b2))*(Math.sin(a2))*(Math.cos(N2))));
n2 = Math.toDegrees(nRad2);
distance2 = (n2/360.)*2*3.14159*3960;
return distance2;
}
double Dist3(double a3, double b3, double N3) {
double nRad3, n3, distance3;
nRad3 = Math.acos(((Math.cos(b3))*(Math.cos(a3)))+
((Math.sin(b3))*(Math.sin(a3))*(Math.cos(N3))));
n3 = Math.toDegrees(nRad3);
distance3 = (n3/360.)*2*3.14159*3960;
return distance3;
}
double Dist4(double a4, double b4, double N4) {
double nRad4, n4, distance4;
nRad4 = Math.acos(((Math.cos(b4))*(Math.cos(a4)))+
((Math.sin(b4))*(Math.sin(a4))*(Math.cos(N4))));
n4 = Math.toDegrees(nRad4);
distance4 = (n4/360.)*2*3.14159*3960;
return distance4;
}
}
class SphericalLawofCosines {
public static void main(String args[]) {
KeyboardReader reader = new KeyboardReader();
DecimalFormat twoDec = new DecimalFormat("0.00");
Calculations calc = new Calculations();
//first distance= Home to Dest1
double a1, b1, N1, nRad1, n1;
//second distance= Dest1 to Dest2
double a2, b2, N2, nRad2, n2;
//third distance= Dest2 to Dest3

double a3, b3, N3, nRad3, n3;


//fourth distance= Dest3 to Home
double a4, b4, N4, nRad4, n4;
char homens, homeew, latns1, latns2, latns3, longew1, longew2, longew3;
double homelong, long1, long2, long3, homelat, lat1, lat2, lat3;
int homelatdeg, homelatmin;
int homelongdeg, homelongmin;
int homedeg, homemin;
int latdeg1, latmin1;
int latdeg2, latmin2;
int latdeg3, latmin3;
int longdeg1, longmin1;
int longdeg2, longmin2;
int longdeg3, longmin3;
//D1= Home to Dest1; D2= Dest1 to Dest2; D3= Dest2 to Dest3; D4= Dest3
to Home
double distance1, distance2, distance3, distance4;
double distance;
System.out.println("What is the latitude (degrees only) of Home?");
homelatdeg = reader.readInt();
System.out.println("What is the latitude (minutes only) of Home?");
homelatmin = reader.readInt();
System.out.println("Is it north (N) or south (S)?");
homens = reader.readChar();
System.out.println("What is the latitude (degrees only) of Location 1?");
latdeg1 = reader.readInt();
System.out.println("What is the latitude (minutes only) of Location 1?");
latmin1 = reader.readInt();
System.out.println("Is it north (N) or south (S)?");
latns1 = reader.readChar();
System.out.println("What is the latitude (degrees only) of Location 2?");
latdeg2 = reader.readInt();
System.out.println("What is the latitude (minutes only) of Location 2?");
latmin2 = reader.readInt();
System.out.println("Is it north (N) or south (S)?");
latns2 = reader.readChar();
System.out.println("What is the latitude (degrees only) of Location 3?");
latdeg3 = reader.readInt();
System.out.println("What is the latitude (minutes only) of Location 3?");
latmin3 = reader.readInt();
System.out.println("Is it north (N) or south (S)?");
latns3 = reader.readChar();

System.out.println("What is the longitude (degrees only) of Home?");


homelongdeg = reader.readInt();
System.out.println("What is the longitute (minutes only) of Home?");
homelongmin = reader.readInt();
System.out.println("Is it east (E) or west (W)?");
homeew = reader.readChar();
System.out.println("What is the longitude (degrees only) of Location 1?");
longdeg1 = reader.readInt();
System.out.println("What is the longitude (minutes only) of Location 1?");
longmin1 = reader.readInt();
System.out.println("Is it east (E) or west (W)?");
longew1 = reader.readChar();
System.out.println("What is the longitude (degrees only) of Location 2?");
longdeg2 = reader.readInt();
System.out.println("What is the longitude (minutes only) of Location 2?");
longmin2 = reader.readInt();
System.out.println("Is it east (E) or west (W)?");
longew2 = reader.readChar();
System.out.println("What is the longitude (degrees only) of Location 3?");
longdeg3 = reader.readInt();
System.out.println("What is the longitude (minutes only) of Location 3?");
longmin3 = reader.readInt();
System.out.println("Is it east (E) or west (W)?");
longew3 = reader.readChar();
if(homens == 'S') {
homelatdeg = homelatdeg*-1;
homelatmin = homelatmin*-1;
}
if(latns1 == 'S') {
latdeg1 = latdeg1*-1;
latmin1 = latmin1*-1;
}
if(latns2 == 'S') {
latdeg2 = latdeg2*-1;
latmin2 = latmin2*-1;
}
if(latns3 == 'S') {
latdeg3 = latdeg3*-1;
latmin3 = latmin3*-1;

}
if(homeew == 'W') {
homelongdeg = homelongdeg*-1;
homelongmin = homelongmin*-1;
}
if(longew1 == 'W') {
longdeg1 = longdeg1*-1;
longmin1 = longmin1*-1;
}
if(longew2 == 'W') {
longdeg2 = longdeg2*-1;
longmin2 = longmin2*-1;
}
if(longew3 == 'W') {
longdeg3 = longdeg3*-1;
longmin3 = longmin3*-1;
}
homelat = calc.HomeLattoDeg(homelatdeg, homelatmin);
homelong = calc.HomeLongtoDeg(homelongdeg, homelongmin);
lat1 = calc.Lat1toDeg(latdeg1, latmin1);
lat2 = calc.Lat2toDeg(latdeg2, latmin2);
lat3 = calc.Lat3toDeg(latdeg3, latmin3);
long1 = calc.Long1toDeg(longdeg1, longmin1);
long2 = calc.Long2toDeg(longdeg2, longmin2);
long3 = calc.Long3toDeg(longdeg3, longmin3);
a1 = calc.A2(homelat);
b1 = calc.B2(lat1);
N1 = calc.N2(homelong, long1);
a2 = calc.A2(lat1);
b2 = calc.B2(lat2);
N2 = calc.N2(long1, long2);
a3 = calc.A2(lat2);
b3 = calc.B2(lat3);
N3 = calc.N2(long2, long3);
a4 = calc.A2(lat3);
b4 = calc.B2(homelat);
N4 = calc.N2(long3, homelong);
distance1 = calc.Dist1(a1, b1, N1);
distance2 = calc.Dist2(a2, b2, N2);
distance3 = calc.Dist3(a3, b3, N3);

distance4 = calc.Dist4(a4, b4, N4);


distance = distance1 + distance2 + distance3 + distance4;
System.out.println("The distance between Home and Location 1 is " +
twoDec.format(distance1) + " miles.");
System.out.println("The distance between Location 1 and Location 2 is " +
twoDec.format(distance2) + " miles.");
System.out.println("The distance between Location 2 and Location 3 is " +
twoDec.format(distance3) + " miles.");
System.out.println("The distance between Location 3 and Home is " +
twoDec.format(distance4) + " miles.");
System.out.println();
System.out.println();
System.out.println("The total distance of the trip is " +
twoDec.format(distance) + " miles.");
}
}

Вам также может понравиться