Einzelnen Beitrag anzeigen

SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#1

zwei Kurse vergleichen

  Alt 29. Mär 2009, 14:09
Hallo, ich brauche ne funktion die zwei Kurse miteinander vergleicht.


ich habe mir auch schon was überlegt. aber das funktioniert irgendwei nicht so recht...

Und zwar habe Ich kurs1 --> True_heading und Kurs2 --> calc_heading

es soll nun verglichen werden, ob calc_heading innerhalb von True_heading +- 90° liegt.

Problem hierbei ist der 360 / = ° Sprung.

Wie kann ich die beiden Kurse vergleichen=?
hier mal mein code:

Delphi-Quellcode:
function Vergleiche_heading(True_heading, calc_heading : integer): boolean;
var heading1 , heading2 : integer;
begin
  dec(true_heading,90);
  inc(true_heading,90);

  if (heading1 > 180) and (heading2 > 0) then
    dec(heading1,360);

  if (heading1 > -180) and (heading2 >= 0) and (calc_heading >= 180) then
    dec(calc_heading,360);

  result := false;

  if (calc_heading >= heading1) and (heading2 >= calc_heading) then
    result := true;

end;


EDIT:

So ich glaube ich habs geschafft:
hier der neue Code:

Delphi-Quellcode:
// Diese Funktion prüft die Kurse auf einen Wert +- 90°
function Vergleiche_heading(True_heading, calc_heading : integer): boolean;
var heading1 , heading2 : integer;
begin
  result := false;

  heading1 := True_Heading - 90;
  heading2 := true_heading + 90;

  //Kurse korrigieren
  if heading1 < 0 then
    heading1 := 360 + heading1;

  if heading2 > 359 then
    heading2 := 360 - heading2;

  if heading1 > heading2 then
    if (calc_heading >= Heading1) and (calc_heading <= heading2 + 360) then
      result := true;

  if (calc_heading >= Heading1) and (calc_heading <= heading2) then
      result := true;

end;
  Mit Zitat antworten Zitat