Hallo,
ich muss für ein Java Projekt eine Distanzmatrix erstellen, die mir in jeder Zeile und Spalte die Entfernung zweier Städte ausgibt. Die Entfernung wird über die Orthodrome berechnet. Ich habe es zumindest geschafft, die Formel in Java zu schreiben und mir ein Matrix ausgeben zu lassen, aber ich möchte die Formel ja nicht separat für jede mögliche Distanz hinschreiben, sondern das ganze irgendwie automatisieren. Bis jetzt habe ich das hier:
Ausgegeben wird dann das:
|0.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
So sollte es auch aussehen. Die Distanz Heidelberg-Heidelberg ist natürlich 0, wie in Zeile 1/Spalte 1. Nur wie kann ich das ganze jetzt automatisieren? Mit einer Schleife? Habe leider noch sehr wenig Erfahrung in Java..
Viele Grüße und danke schonmal für Hilfe,
Micha
ich muss für ein Java Projekt eine Distanzmatrix erstellen, die mir in jeder Zeile und Spalte die Entfernung zweier Städte ausgibt. Die Entfernung wird über die Orthodrome berechnet. Ich habe es zumindest geschafft, die Formel in Java zu schreiben und mir ein Matrix ausgeben zu lassen, aber ich möchte die Formel ja nicht separat für jede mögliche Distanz hinschreiben, sondern das ganze irgendwie automatisieren. Bis jetzt habe ich das hier:
Java:
public class Matrix {
public static void main(String args[]){
//Variablen
String hd = "HD";
String go = "Go";
String mr = "Mr";
String bn = "Bn";
String b = "B";
String p = "P";
String mos = "Mos";
String ny = "NY";
String lon = "Lon";
String ls = "Ls";
//Zentriwinkel
double winkel;
//Strecke für Erdumfang 40.000km
double strecke;
//Breitengrad der Stadt A
double aa;
//Breitengrad der Stadt B
double ab;
//Längengrad der Stadt A
double ba;
//Längengrad der Stadt B
double bb;
//Streckenberechnung über Orthodrome allgemein
//winkel = Math.acos(Math.sin(aa)* Math.sin (ab) + Math.cos(aa) * Math.cos(ab) * Math.cos(bb - ba));
//strecke = (winkel / 360) * 40000;
//Strecke HD - HD
winkel = Math.acos(Math.sin(49.41)* Math.sin (49.41) + Math.cos(49.41) * Math.cos(49.41) * Math.cos(8.69 - 8.69));
strecke = (winkel / 360) * 40000;
// Matrix
double [][] matrix = new double [][]{
{strecke, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
};
for (int k = 0; k < matrix.length; k++) {
for (int l = 0; l < matrix[k].length; l++) {
System.out.print("|" + matrix[k][l]+ "|" + "\t");
}
System.out.println("");
}
}
}
Ausgegeben wird dann das:
|0.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
|1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0| |1.0|
So sollte es auch aussehen. Die Distanz Heidelberg-Heidelberg ist natürlich 0, wie in Zeile 1/Spalte 1. Nur wie kann ich das ganze jetzt automatisieren? Mit einer Schleife? Habe leider noch sehr wenig Erfahrung in Java..
Viele Grüße und danke schonmal für Hilfe,
Micha