• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Problem beschleunigtem GetBestMap-Algorithmus (r2207-2209)

arbor95

Geoguru
Hallo Pfeffer,
Ich habe ein Profil bei dem :

werden teilweise weisse Flächen angezeigt, obwohl Karten vorhanden sind. Es muss wohl eine Konstellation geben, die Probleme mit dem neuen Algorithmus 2207-2209 hat.

OK Falsche Überschrift.
 
OP
arbor95

arbor95

Geoguru
Hallo Pfeffer, hier ein Beispiel.
Es wird die falsche Karte ausgewählt. (hier - die Karte östlich)
 

Anhänge

  • z.b.zip
    683,6 KB · Aufrufe: 10

pfeffer

Geowizard
ich hoffe, mit r2214 das Problem behoben zu haben.

Bitte weiter ausführlich testen!

Danke,
Pfeffer.
 
OP
arbor95

arbor95

Geoguru
Also bei mir geht das Beispiel immer noch nicht. (mein Build mit deinem mapslist 2214).
Es wird die Karte östlich zuerst gewählt. Der WP ist aber auf der Mittleren Karte.
Ein anderes Beispiel bringt zuerst die Karte mit dem grösseren Überblick (SF 5 statt 3,5).
Ich glaube das war mal umgekehrt, erst die mit der grössten Genauigkeit.
 

ColleIsarco

Geowizard
Hallo
araber95 schrieb:
Also bei mir geht das Beispiel immer noch nicht. (mein Build mit deinem mapslist 2214).
Es wird die Karte östlich zuerst gewählt. Der WP ist aber auf der Mittleren Karte.
Ich kann das Problem bestätigen. In manchen Fällen wird eine Karte ausgewählt, auf der gewünschte Punkt gar nicht erst drauf liegt, obwohl es eine Karte für diesen Punkt gibt.
Das ist beim Füllen der weißen Flächen sehr ungeschickt, weil dort nur Karten hinzugefügt werden, die den gesuchten Punkt beinhalten.

@Pfeffer: Wenn du irgendwelche Information zur Fehlersuche braucht, sag mir kurz, was für dich sinnvoll ist.

Gruß
ColleIsarco
 

pfeffer

Geowizard
komisch.
Ich habe das Beispiel von araber95 genommen, damit geht es bei mir seit meinen Änderungen r2214.

Wenn es bei Dir nicht damit nicht geht, dann stell mir doch bitte genauso ein Beispiel zusammen wie es araber95 hier getan hat. Das war sehr nutzlich für die Fehlersuche.

Gruß,
Pfeffer.

EDIT: bei araber95 funktioniert es inzwischen. Irgendwie lag es an dem Zusammenspiel mit der FingerbedienungsmovingMap, die er sich immer baut. Ohne sie funktioniert es bei ihm.

EDIT2: es scheint weiterhin bei bestimmten Konstellationen nicht zu funktionieren. Habe eine solche auch bei mir gefunden --> Brauchst also erstmal nicht noch so ein Bsp. zu konstruieren.
 

pfeffer

Geowizard
So....

araber95 hat mich remote debuggen lassen, weil bei mir der Fehler nicht reproduzierbar war.
Bei ihm geht jetzt (r2219) sein Problembeispiel.

Der Grund war, dass Area.isOverlapping(Area a) nicht "true" zurückgeliefert hat, wenn sich die beiden Flächen zwar überlappen, aber keine der Flächen einen Eckpunkt innerhalb der anderen liegen hat.

Bitte testen!

Danke für's Testen und großen Dank an araber95 dafür, dass ich auf seinem Rechner remote debuggen konnte.

Pfeffer.
 

Engywuck

Geowizard
Ich habs nur zur Hälfte verstanden - gehts hier evtl. um die Frage, wann sich zwei Rechtecke schneiden?

Gruß,
E.
 

ColleIsarco

Geowizard
Hallo
pfeffer schrieb:
Der Grund war, dass Area.isOverlapping(Area a) nicht "true" zurückgeliefert hat, wenn sich die beiden Flächen zwar überlappen, aber keine der Flächen einen Eckpunkt innerhalb der anderen liegen hat.
Das enstpricht meinen Beobachtungen. Ein schneller Test gerade hat gezeigt, dass die Karten wieder gefunden werden. Scheint also wieder zu funktionieren.

Gruß
ColleIsarco
 

pfeffer

Geowizard
Engywuck schrieb:
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 schrieb:
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.
 

Engywuck

Geowizard
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:
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.
 

pfeffer

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

EDIT: mit r2220 auf Deinen Vorschlag umgestellt.
 
Oben