intersect von zwei Rechtecken

Schuriko

Bekanntes Mitglied
Ich suche gerade zwei effiziente Methoden, die

1. bestimmen ob sich zwei Rechtecke überschneiden
2. den Bereich (als Rechteck) der Überschneidung
 
K

kneitzel

Gast
??? Du suchst effektive Methoden und du wurdest auf Methoden hingewiesen. Hast Du Dir diese mal angesehen?

Oder was stört Dich an den Methoden?
 

httpdigest

Top Contributor
Wenn du ein Rechteck durch den minimalen und maximalen Eckpunkt beschreibst, dann:
Java:
public boolean intersects(Rectangle other) {
    return minX < other.maxX && maxX >= other.minX &&
           maxY >= other.minY && minY < other.maxY;
}
public Rectangle intersect(Rectangle other) {
    float nMinX = Math.max(minX, other.minX), nMinY = Math.max(minY, other.minY);
    float nMaxX = Math.min(maxX, other.maxX), nMaxY = Math.min(maxY, other.maxY);
    if (nMinX > nMaxX || nMinY > nMaxY) {
        return null;
    }
    return new Rectangle(nMinX, nMinY, nMaxX, nMaxY);
}
 

Schuriko

Bekanntes Mitglied
Wenn du ein Rechteck durch den minimalen und maximalen Eckpunkt beschreibst, dann:
Java:
public boolean intersects(Rectangle other) {
    return minX < other.maxX && maxX >= other.minX &&
           maxY >= other.minY && minY < other.maxY;
}
public Rectangle intersect(Rectangle other) {
    float nMinX = Math.max(minX, other.minX), nMinY = Math.max(minY, other.minY);
    float nMaxX = Math.min(maxX, other.maxX), nMaxY = Math.min(maxY, other.maxY);
    if (nMinX > nMaxX || nMinY > nMaxY) {
        return null;
    }
    return new Rectangle(nMinX, nMinY, nMaxX, nMaxY);
}
Danke dir! Jetzt weis ich wie man es am effektivsten erfüllen kann.
 
K

kneitzel

Gast
Jo, der Source kann ja eingesehen werden. Daher kann das JDK sehr gut als Referenz genommen werden.
 

Ähnliche Java Themen


Oben