Ergebnis 1 bis 5 von 5

Thema: [RMXP] Kollisionsabfrage => Denkfehler

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #3
    Zitat Zitat
    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:
    Code:
    public boolean overlap(Rechteck r1, Rechteck r2)
    return !(r1.startX > r2.endX || r1.startY > r2.endY || r1.endX < r2.startX || r1.endY < r2.startY)
    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.

    Geändert von Cornix (05.11.2012 um 16:21 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •