Sind zwei Rechtecke überlappen?
Studierte ich dieses Frage, und folgte die Antwort zu implementieren eine eigene version in Java. Ich denke, es ist nah... aber immer noch falsch. Könnten Sie mir bitte einen Vorschlag machen, der Fehler???
Den vollständigen Quellcode finden Sie hier:
//Determine if it is inside
boolean isInside = ((r1x1 >= r2x1) && (r1x2 >= r2x2)
&& (r1y1 >= r2y1) && (r1y2 <= r2y2));
//Determine if it is overlap
boolean isOverLap = (!(r1x1 >= r2x2) && !(r1x2 <= r2x2)
&& !(r1y2 >= r2y1) && !(r1y1 <= r2y2));
//Determine if it is NOT overlap
boolean isNotOverLap = ((r1x1 >= r2x2) || (r1x2 <= r2x2)
|| (r1y2 >= r2y1) || (r1y1 <= r2y2));
Laut dem Buch, das ich studiere, ist dies sein soll: r2 overlap r1
. Aber mein Programm die Ausgabe r2 does not overlap r1
.
Enter the r1's center x, y coordinates, width and height
1 2 3 5.5
Enter the r2's center x, y coordinates, width and height
3 4 4.5 5
Rectangle 1: (-0.50, 4.75), (2.50, -0.75)
Rectangle 2: (0.75, 6.50), (5.25, 1.50)
r2 does not overlap r1
Was ist falsch mit
Ist das ein Rätsel? Was für Fehler?
Titel editiert:
boolean isNotOverLap = !isOverLap
? 😛Ist das ein Rätsel? Was für Fehler?
Titel editiert:
"Is you is, or is you ain't, my constituency?"
InformationsquelleAutor George | 2013-06-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, es sollte
(leichter zu Lesen, ohne all die Negationen)
Können Sie sehen, wie die gegenüber der vier Fälle, die jeder auf Ihrer eigenen gewährleisten, dass eine überlappung nicht passieren:
InformationsquelleAutor kamjagin
Hier ist meine Lösung, die ich getestet habe, es so gut.
InformationsquelleAutor abc123
Der ersten Zeile hat sich ein Fehler in
(r1x2 >= r2x2)
:Die richtige sollte sein:
isOverLap
undisNotOverLap
...InformationsquelleAutor Renato Lochetti
zwei rectagles werden überlappend .... wenn die jeweiligen diagonalen haben die gleiche Länge
Beispiel:
R1 : (x1,y1) , (x2,y2) , (x3,y3) , (x4,y4)
R2 : (a1,b1) , (a2,b2) , (a3,b3) , (a4,b4)
so sollte dies wahr sein:
Strecke((x1,y1) , (x3,y3)) = Distanz((a1,b1) , (a3,b3))
und auch
Abstand((x2,y2) , (x4,y4)) = Distanz((a2,b2) (a4,b4))
InformationsquelleAutor Bharat