Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Problem beschleunigtem GetBestMap-Algorithmus (r2207-2209)

Papierloses Cachen.

Moderatoren: arbor95, pfeffer, MiK

Benutzeravatar
pfeffer
Geowizard
Beiträge: 2249
Registriert: Mo 31. Jul 2006, 21:20

Re: Problem beschleunigtem GetBestMap-Algorithmus (r2207-2209)

Beitrag von pfeffer »

Engywuck hat geschrieben:Ich habs nur zur Hälfte verstanden - gehts hier evtl. um die Frage, wann sich zwei Rechtecke schneiden?
ja, genau. Als ich das vor Ewigkeiten programmiert hatte, habe ich einen Sonderfall übersehen, nämlich den in http://www.back-side.net/codingrects.html mit Nr. 3 bezeichneten. Aus irgendeinem Grund hat der verbesserte Algorithmus diesen uralten Fehler zu Tage gefördert.

Jetzt, wo Du fragst, habe ich nach einem Algo für die ERkennung der Überlappung gegoogelt und eben diesen Link gefunden. Da ist auch eine schöne systematische Lösung angegeben. Ob die besser, genauer: schneller ist als die jetzige?
ColleIsarco hat geschrieben:Das enstpricht meinen Beobachtungen. Ein schneller Test gerade hat gezeigt, dass die Karten wieder gefunden werden. Scheint also wieder zu funktionieren.
puuh. Das war echt eine schwere Geburt. Aber das Problem trat nur bei einer bestimmten Bilschirmgröße auf (nicht zu klein und nicht zu groß), so dass nicht so leicht reproduzierbar war auf unterschiedlichen Rechnern.

Gruß,
Pfeffer.
Dokumentation mit FAQ zum CacheWolf (Paperless Geocaching): http://cachewolf.org/
Benutzeravatar
Engywuck
Geowizard
Beiträge: 1003
Registriert: Fr 12. Okt 2007, 19:50

Re: Problem beschleunigtem GetBestMap-Algorithmus (r2207-2209)

Beitrag von Engywuck »

Ich hatte das gleiche Problem mal vor einigen Jahren in Delphi zu lösen. Habe dabei rausgefunden, dass es viel einfacher ist, wenn man sich überlegt, wann sich die Rechtecke nicht schneiden - ggf. das Ergebnis invertieren.
Meine (relativ einfache) Lösung sieht (in Pascal) so aus:

Code: Alles auswählen

function RectanglesDoIntersect(R1, R2: TRect): Boolean;
begin
  Result := not((R1.Bottom < R2.Top) or (R1.Top > R2.Bottom) or
                (R1.Right < R2.Left) or (R1.Left > R2.Right));
end;
Sollte vollständig sein - vielleicht hilft es ja.

Gruß,
E.
Benutzeravatar
pfeffer
Geowizard
Beiträge: 2249
Registriert: Mo 31. Jul 2006, 21:20

Re: Problem beschleunigtem GetBestMap-Algorithmus (r2207-2209)

Beitrag von pfeffer »

das sieht mir sehr schön und elegant aus.
Danke!
Pfeffer.

EDIT: mit r2220 auf Deinen Vorschlag umgestellt.
Dokumentation mit FAQ zum CacheWolf (Paperless Geocaching): http://cachewolf.org/
Antworten