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;