intersect von zwei Rechtecken

Diskutiere intersect von zwei Rechtecken im Spiele- und Multimedia-Programmierung Bereich.
S

Schuriko

Ich suche gerade zwei effiziente Methoden, die

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

mihe7

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

JustNobody

??? 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

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

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.
 
J

JustNobody

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

intersect von zwei Rechtecken

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben