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]