サイズの異なるセルをランダムに並べて、異なるセル間の重なり面積を計算しようとしています。したがって、オーバーラップは次のいずれかであり、おそらく他のものでもあります。重複を確認して計算するために、異なるセル間で1対1の比較を行っています。
そのため、オーバーラップを検出し、緑色の領域を計算する必要があります。セルにセル 1 とセル 2 という名前を付け、左側の値を x1、右側の値を x2 としたとします。下側を y1、上側を y2 とします。これは私のコードのようなものですが、すべての部分をカバーしているようには見えません。黒のセルをcell1、赤のセルをcell2とすると、
if (cell1.x2 > cell2.x1)
{
if(cell1.y2 >
if ((cell1.y2 > cell2.y1) && (cell2.y1 >= cell1.y1))
{
if(cell1.y2 > cell2.y2)
{
if (cell1.x2 > cell2.x2)
{
Area = cell2.h * cell2.w;
continue;
}
Area = cell2.h * cell2.x1 - cell1.x2);
continue;
}
Area = cell1.x2 - cell1.x1) * cell1.y2 - cell2.y1);
continue;
}
いくつかの条件が欠けていると思いますが、これは多くの if ステートメントのように見えます。面積を計算する理想的な方法は何ですか?