intersect von zwei Rechtecken

S

Schuriko

Bekanntes Mitglied
Ich suche gerade zwei effiziente Methoden, die

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

mihe7

Top Contributor
Was gefällt Dir an den betreffenden Methoden von java.awt.Rectangle bzw. java.awt.geom.Rectangle2D nicht?
 
K

kneitzel

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

Oder was stört Dich an den Methoden?
 
H

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);
}
 
S

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

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

Ähnliche Java Themen

Anzeige

Neue Themen


Oben