我正在研究一個突破性的克隆,我一直在想如何得到兩個碰撞矩形的交點矩形,以便我可以測量球在x和y軸上進入塊的深度,並決定哪個組件速度我會扭轉。如何從兩個交點構造矩形?
我想我可以計算深度每種情況下是這樣的:
但是,如果我有交集矩形比我woudn't擔心,如果球從打塊左/右或頂部/底部(因爲我只會分別反轉x和y軸),從而爲我節省了大量的打字工作。
我看過Pygame's docs,但似乎沒有這方面的功能。我將如何去解決這個問題?
我正在研究一個突破性的克隆,我一直在想如何得到兩個碰撞矩形的交點矩形,以便我可以測量球在x和y軸上進入塊的深度,並決定哪個組件速度我會扭轉。如何從兩個交點構造矩形?
我想我可以計算深度每種情況下是這樣的:
但是,如果我有交集矩形比我woudn't擔心,如果球從打塊左/右或頂部/底部(因爲我只會分別反轉x和y軸),從而爲我節省了大量的打字工作。
我看過Pygame's docs,但似乎沒有這方面的功能。我將如何去解決這個問題?
假設你有矩形r1
和r2
,與.left, .right, .top, and .bottom
邊緣,然後
left = max(r1.left, r2.left);
right = min(r1.right, r2.right);
top = max(r1.top, r2.top);
bottom = min(r1.bottom, r2.bottom);
(與協調增加從上到下的通用慣例和從左到右)。最後,檢查left<right
和top<bottom
,並計算面積:
Area = (right - left) * (top - bottom);
另外,可以使用clip()
功能。從文檔你在你的問題鏈接:
夾(矩形) - >矩形返回被剪裁成 完全參數矩形內一個新的矩形。如果兩個矩形不重合,則返回0大小的矩形。
有** lot **這個問題的重複(例如[Rectangle intersection](http://stackoverflow.com/questions/7675201/rectangle-intersection))。請在發佈新問題前使用搜索工具... –
我對Pygame一無所知,但我想它提供了一些方法來獲取矩形的座標/大小?在這種情況下,將任何[現有問題](http://stackoverflow.com/search?q=rectangle+intersection)中提出的任何解決方案翻譯成使用Pygame應該相對簡單... –