So erhalten Sie überlappende Rechteckkoordinaten

7

Angenommen, ich habe die folgenden überlappenden Rechtecke ("a" und "b"):

%Vor%

Ich habe viele Ideen gesehen, wie man den Bereich des inneren Rechtecks ​​("c") berechnen kann, aber wie würde ich gehen, um die tatsächlichen Koordinaten oben / links / unten / rechts zu bekommen dafür?

    
Chris 03.07.2010, 22:09
quelle

5 Antworten

13

Rufen Sie Rectangle.Intersect auf.

    
Tim Robinson 03.07.2010, 22:18
quelle
9

Die X-Koordinaten des Überlappungsbereichs von zwei Rechtecken können gemäß der folgenden Logik gefunden werden.

Um die Y-Koordinaten zu finden, ersetzen Sie Y für X in der letzten der vier Annahmen sowie in allen drei Fällen.

Annahmen:

  • A und B sind Rechtecke (deren Seiten entlang der X- und Y-Achse ausgerichtet sind),

  • Jedes der Rechtecke wird durch zwei Punkte definiert ( x min / y min ) - ( x max / y max )

  • wobei x min & lt; x max und y min & lt; y max .

  • A.x min & lt; B.x min

Fall 1 - Keine Überschneidung:

%Vor%

A.x min & lt; A.x max & lt; B.x min & lt; B.x max ⇒ Keine Überlappung.

Fall 2 - Einige Überschneidungen:

%Vor%

A.x min & lt; B.x min & lt; A.x max & lt; Bx max ⇒ Überlappende X-Koordinaten: Bx min - Ax max

Fall 3 - Vollständige Überlappung:

%Vor%

A.x min & lt; B.x min & lt; B.x max & lt; Ax max ⇒ Überlappende X-Koordinaten: Bx min - Bx max

PS: Sie können diesen Algorithmus tatsächlich weiter vereinfachen. Die Überlappungs-X-Koordinaten sind immer:

  

max ( Ax min , Bx min ) - min ( Ax max , Bx max )

, außer wenn der zweite Wert kleiner als der erste ist; das bedeutet, dass es keine Überlappung gibt.

    
stakx 03.07.2010 22:37
quelle
4
%Vor%     
ChrisW 03.07.2010 22:15
quelle
1

Angenommen:

%Vor%

Überlappendes Rechteck RO berechnet sich wie folgt mit C #:

%Vor%

Inneres Rechteck RI:

Tausche Min und Max in der obigen Lösung für überlappendes Rechteck RO.

    
user319785 04.07.2010 06:16
quelle
0

Ich habe einen abstrakten Validator für mein Projekt verwendet und überprüft, ob einige Layout-Steuerelemente wo Überschneidungen Ich Rechtecke aus den Layout-Figuren erstellt:

%Vor%     
Monolithcode 12.06.2017 12:42
quelle

Tags und Links