Thema: Delphi Punkt innerhalb Kreis?

Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#5

Re: Punkt innerhalb Kreis?

  Alt 20. Dez 2008, 15:33
Die Beschränkung auf Integer erscheint mir nicht sehr weise, da z.B. bei einem Kreis mit "ungeradem" Durchmesser der Mittelpunkt und der Radius eben nicht als Integer ausgedrückt werden können. Auch ist der Geschwindigkeitsnachteil von Gleitkommaoperationen bei zeitgemäßen Prozessoren durchaus zu vernachlässigen. Interessanterweise ist gerade in diesem Fall die Verwendung von Extended statt Integer etwas schneller:

Der Code

result := Sign(Sqr(radius) - Sqr(a.x-b.x) - Sqr(a.y-b.y)); läuft auf meinem System ca. 10% schneller als die Integer-Variante

result := Sign(SquareInt(radius) - SquareInt(a.x-b.x) - SquareInt(a.y-b.y)); während die leicht optimierte Version

Delphi-Quellcode:
var
  x, y: Integer;
begin
  x := (a.x-b.x);
  y := (a.y-b.y);
  result := Sign(radius*radius - x*x - y*y);
end;
nur knapp 5% schneller ist als die Extended-Version.
Uwe Raabe
  Mit Zitat antworten Zitat