確定重疊矩形
在電腦圖形和空間資料處理領域,決定兩個矩形是否重疊是一項常見任務。這對於偵測碰撞、對齊物件或執行幾何運算至關重要。
在 C 語言中,解決此問題的常見方法涉及利用邊界框的概念。邊界框表示包含另一個形狀內所有點的最小矩形。透過比較兩個矩形的邊界框,我們可以確定是否存在重疊。
檢查邊界框
您提供的程式碼片段嘗試實現邊界使用向量運算的框方法。它計算矩形 1 上的點的旋轉邊緣、矩形 2 上的測試點,然後確定它們的點積的值。點積的值用於確定兩個點是否位於旋轉邊緣的相對側,表示可能重疊。
但是,提供的程式碼有些不準確。相反,我們可以使用以下簡化程式碼來使用邊界框檢查重疊:
bool isOverlap(Rectangle a, Rectangle b) { bool overlapX = (a.left < b.right && a.right > b.left); bool overlapY = (a.top > b.bottom && a.bottom < b.top); return overlapX && overlapY; }
此程式碼比較兩個矩形的左、右、上、下邊界以確定它們是否相交。如果 X 軸和 Y 軸都有重疊,則矩形重疊。
使用笛卡爾座標
或者,如果您使用笛卡爾座標 (X1, Y1) 表示矩形的左座標和上座標,(X2, Y2)代表右座標和下座標,可以使用以下公式:
bool isOverlap(Rectangle a, Rectangle b) { bool overlapX = (a.X1 < b.X2 && a.X2 > b.X1); bool overlapY = (a.Y1 > b.Y2 && a.Y2 < b.Y1); return overlapX && overlapY; }
透過利用邊界框或直角座標,您可以有效地確定兩個矩形是否重疊,從而使您能夠精確地執行複雜的幾何運算和空間推理。
以上是我們如何有效地確定 C 中兩個矩形是否重疊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!