C# Berechung der Fläche zweier geschnittenen Rechtecke?
Wie kann ich die markierte Fläche berechnen? Koordinaten x und y (markiert mit X) sind gegeben und Länge a und b beider Rechtecke ebenfalls. Danke

3 Antworten
Es gelten die allgemeinen Regeln für die Berechnung einer Fläche:
Länge mal Höhe
Für die Länge musst Du nur die Differenz bilden, also den Absolutwert der Differenz der beiden X-Koordinaten, wobei natürlich die richtigen X-Koordinaten zu nehmen sind (das größere X des Rechtecks mit der kleinsten X-Koordinate - also des linken Rechtecks, sowie das kleiner X des Rechtecks mit der größten X-Koordinate - also des rechten Rechtecks).
Für die Höhe dasselbe, den Absolutwert der Differenz der beiden Y-Koordinaten. Auch hier wieder die richtigen Y-Koordinaten: Das größere Y des Rechtecks mit der kleinsten Y-Koordinate (des oberen Rechtecks) und das kleinere Y des Rechtecks mit der größten Y-Koordinate (des unteren Rechtecks).
Mit diesen Regeln sollte es einfach sein.
Tipp: Bilde Funktionen für den Absolutwert, die Differenz, für die Abfrage der größten und kleinsten Werte sowie der größeren und der kleineren Werte. Dann stöpsele das alles Zusammen und fertig ist das Programm. Gilt übrigens nicht nur für C#, sondern auch für jede andere Sprache (inkl. Assembler, ggf. aber nicht für Malborge :-)
var schnittrechteck = rechteck1.Intersect(rechteck2);
var schnittflaeche = schnittrechteck.Size.Width * schnittrechteck.Size.Height;
x1 < x2 + w2 && y1 < y2 + h2 && x1 + w1 > x2 && y1 + h1 > y2