Ich hab mal eine ganz grundsätzliche Frage: Ich verwende diese Methode um die entfernung zwischen zwei punkten auszurechnen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| public double getDistance(GeoCoordinate g1, GeoCoordinate g2) { g1.Latitude /= 180 * Math.PI; g2.Latitude /= 180 * Math.PI; g1.Longitude /= 180 * Math.PI; g2.Longitude /= 180 * Math.PI;
return (Math.Acos(Math.Sin(g1.Latitude) * Math.Sin(g2.Latitude) + Math.Cos(g1.Latitude) * Math.Cos(g2.Latitude) * Math.Cos(g2.Longitude - g1.Longitude)))*6378.137; } |
Nun wunder ich mich die ganze zeit warum mein Programm nicht funktioniert und habe testweise den wert den ich zurückbekomme durch einen fixen ersetzt. Und siehe da es geht!
Nun werden die beiden GeoCoordinaten die ich als Parameter mitgebe, im Aufrufenden Programm verändert!
wenn ich den Aufruf
double dist = helper.getDistance(c1, center);
verwende, haben die werte c1 und center nacher genau diese /180*PI, wurden also in RAD umgerechnet.
Jetzt bin ich etwas verwirrt, da ich dieses verhalten nur aus C kenne, wenn ich dort Pointer übergebe. Sind Parameter automatisch "Pointer" in C#??? Irgendwie kann ich mir das net vorstellen, da auch andere Methoden nach dem gleichen Prinzip dieses verhalten nicht zeigen... Wo ist mein Fehler?