wenn du eine kollission zweier gleichgroßer rechtecke abfragen möchtest, brauchst du eigentlich nur 2 abfragen.
also praktisch:
Code:
if (x1begin >= x2begin && y1begin >= y2begin && x1begin <= x2end && y1begin <= y2end) damit schaust du, ob sich die obere linke ecke des ersten rechtecks innerhalb des 2. rechtecks befindet. wenn ja, findet logischerweise eine kollission statt.
wenn das nicht zutrifft
Code:
if (x1end >= x2begin && y1end >= y2begin && x1end <= x2end && y1end <= y2end) das betrifft die untere rechte ecke.
sollte diese auch nicht innerhalb des rechtecks sein, findet keine kollission statt.
...
Was du sagst stimmt leider so nicht, schaue auf das Bild im Anhang.
Die korrekte Lösung ist folgende:
Ein Rechteck liegt teilweise innerhalb eines anderen genau dann wenn die beiden nicht vollständig disjunkt sind.
Das wäre als Code:
Denn falls eine der folgenden Bedingungen erfüllt ist:
r1.startX > r2.endX
r1.startY > r2.endY
r1.endX < r2.startX
r1.endY < r2.startY
berühren sich die beiden Rechtecke überhaupt nicht, und die Negation der Aussage ist dann die Bedingung falls beide Rechtecke einander überschneiden.