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.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.
Das enstpricht meinen Beobachtungen. Ein schneller Test gerade hat gezeigt, dass die Karten wieder gefunden werden. Scheint also wieder zu funktionieren.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.
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.Engywuck schrieb:Ich habs nur zur Hälfte verstanden - gehts hier evtl. um die Frage, wann sich zwei Rechtecke schneiden?
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.ColleIsarco schrieb:Das enstpricht meinen Beobachtungen. Ein schneller Test gerade hat gezeigt, dass die Karten wieder gefunden werden. Scheint also wieder zu funktionieren.
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;