# Schnitt zweier Rechtecke ermitteln



## Ahnungsloser² (19. Jan 2006)

Hi,

ich habe ein kleines Problem. Ich habe zwei Rechtecke, die jeweils durch die x,y Koordinaten der linkeren oben Ecke und der Breite und Höhe festgelegt sind. Nun möchte ich das Rechteck erzeugen, welches genau den Schnitt dieser beiden Rechtecke erzeugt(also wieder x,y Koordination, Breite,Höhe).

Wie mache ich das?

Dankeschön


----------



## Leroy42 (19. Jan 2006)

Du muß die Punkte bestimmen die in beiden Dreicken (mit Rand) gleichzeitig liegen.

Angenommen daß erste Rechteck hat die Daten x1, y1, w1, h1

Dann besteht das Rechteck1 aus allen Punkten für die gilt


```
x1 <= x < x1 + w UND y1 <= y < y1 + h

Entsprechend

x2 <= x < x2 + w UND y2 <= y < y2 + h
```

Das "Schnittrechteck" besteht aus allen (x,y) für die *alle* Bedingungen.

Jetzt mußt du die einzelnen Ungleichung nur noch zusammenführen

Zum Beispiel:

x1 <= x UND x2 <= x gilt genau dann wenn x größergleich *beiden* x-Werten ist,
also auch immer größergleich dem *größeren* der beiden.

Damit muß also gelten x >= max(x1, x2) und damit ist der linke Rand des Schnittdreiecks schonmal bekannt.

Den Rest solltest du dir jetzt selbst erarbeiten können.

Leroy42


----------



## Bleiglanz (19. Jan 2006)

Rectancle 2D kanns auch

public static void intersect(Rectangle2D src1,
                             Rectangle2D src2,
                             Rectangle2D dest)

    Intersects the pair of specified source Rectangle2D objects and puts the result into the specified destination Rectangle2D object. One of the source rectangles can also be the destination to avoid creating a third Rectangle2D object, but in this case the original points of this source rectangle will be overwritten by this method.

    Parameters:
        src1 - the first of a pair of Rectangle2D objects to be intersected with each other
        src2 - the second of a pair of Rectangle2D objects to be intersected with each other
        dest - the Rectangle2D that holds the results of the intersection of src1 and src2


----------

