Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Überprüfen ob Punkt im Kreis ist

  Alt 15. Mär 2007, 12:52
Zitat von turboPASCAL:
Was ist denn das für eine Frage?

Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if Sqrt(Power(x - center.x, 2) + Power(y - center.y, 2)) <= r
    then caption := 'ja'
    else caption := 'nein';
end;
Was ist denn das für eine Antwort?

Zitat von xZise:
Wie kann man möglichst schnell überprüfen ob ein Punkt im Kreis liegt?
if Sqrt(Power(x - center.x, 2) + Power(y - center.y, 2)) <= radius then center = Mitteplunkt des kreises
x und y = Punkt
radius = Radius
Zitat von gammatester:
Auf jeden Fall schneller und einfacher ist

if sqr(x - center.x) + sqr(y - center.y) <= sqr(radius) then
Also quadrieren? Klingt gut!
Eine Frage: Wäre es möglich das mit nur Integer zu rechnen, weil bei ganzen Zahlen immer ganze Quadrate rauskommen?

Zitat von gammatester:
sqr(radius) ist wahrscheinlich ziemlich konstant und kann vorher berechnet werden.
Jap...

Zitat von gammatester:
Wenn die Prüfungen innerhalb von x/y Schleifen erfolgen, kann man je nach Struktur sqr(x - center.x) oder sqr(y - center.y) außerhalb der Schleifen berechnen.
Ne ... Das wäre unnötig, da ich nur einmal das berechnen muss...

[edit]Nur noch ~ ein viertel!
80 Millionen mal meine Variante = ~4,7 s
80 Millionen mal gammas Variante = ~0,7 s (mit den constanten "r")
[/edit]
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat