Einzelnen Beitrag anzeigen

fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#1

Distanzberechnung zwischen zwei Koordinaten gibt manchmal eine Fehlermeldung aus

  Alt 21. Jun 2015, 00:13
Hallo
ich bin gerade Dabei ein Programm das eine Datei aus einem Fluglogger(aus einem Segelflieger) ausließt und dann eine Strecke raus optiemieren soll(wie z.B hier). Im Internet findet man nicht viel wie so ein Algorithmus funktionieren könnte, aber ich hab ein Quellcode gefunden auf github. Allerdings in C jetzt bin ich gerade dabei das Schritt für Schritt in Delphi umzusetzen. Aber beim berechnen der Distanzmatrix kommt bei einem bestimmten Punkt die Fehlermeldung daß es eine ungültige Gleitkommaoperation sei, obwohl es davor schon einige 1000 distanzen fehlerfrei ausgerechnet hat. Um den Fehler nachzuvollziehen gebe ich den Index der Zwei Punkte aus zwischen denen die Distanz berechnet wird in einer Memo aus. Der Fehler tritt zum erstenmal auf wenn er den 12 mit dem 51 Punkt vergleicht. Leider kann ich absolut nicht nachvollziehen warum der Fehler auftritt schließlich hat er ja davor schon einige tausen distanzen fehlerfrei berechnet. Im Anhang habe ich das komplette Projekt mit quellcode und der Logger datei(.IGC).
Das ist die Funktion in der der Fehler auftritt.
Delphi-Quellcode:
function TFlug.dpointtopoint(index1: Integer; index2: Integer) : integer;
var
dist,x : double;
sli,cli,lri : double;

begin
  sli := Punkte[index1].sinlat;
  cli := Punkte[index1].coslat;
  lri := Punkte[index1].lonrad;
  x := sli*Punkte[index2].sinlat;
  x := x + cli*Punkte[index2].coslat * cos(lri - Punkte[index2].lonrad);
  form10.Memo1.Text := 'i: '+ inttostr(index1) +'|j: '+inttostr(index2);
  Application.ProcessMessages;
  if (index1=12) and (index2=51) then
  begin
    dist := 0;

  end
  else dist := FAK*arccos(x);

  result := round(dist);
end;
Angehängte Dateien
Dateityp: 7z IGCParser.7z (218,7 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat