所以我試圖解決圖形問題。基本上有一個容器,假設它的寬度爲600px。如果該容器中只有一個矩形(沒有重疊的矩形),它將佔用它的寬度。但是,問題是當這些矩形重疊時,寬度必須相應縮小。我們給出這個矩形的左上角和左下角的y座標。 (比如它開始60px下來,結束120px大容器)問題與重疊的水平矩形
所以我寫了一個重疊算法,檢查是否存在重疊並計算該矩形重疊的矩形的數量(包括它本身)。然後我將容器寬度除以重疊元素的最大數量,以獲得較小矩形的寬度。
for (i = 0; i < events.length; i++) {
var event = events[i];
var numCollisions = 0;
for (j = 0; j < events.length; j++) {
var eventCmp = events[j];
if (event.start <= eventCmp.start && event.end > eventCmp.start ||
event.start < eventCmp.end && event.end >= eventCmp.end) {
numCollisions++;
}
}
但是,我注意到了這個問題。如果你看下面這張圖片,最右邊的矩形有兩個重疊的矩形。通過我的算法,你會得到容器寬度/ 3(包括矩形本身),這是不正確的。實際的答案是容器寬度/ 2。
所以,問題是(本長篇大論的解釋後),我需要找到,如果兩個矩形水平對齊。幾個小時以來,我一直在嘲笑我。有關我如何做到這一點的任何提示?
你能顯示輸入和期望輸出的圖片嗎?我不確定你的照片是目標還是問題。 – 2013-02-18 01:15:00
顯示的圖片是所需的輸出。我目前使用我的代碼的圖片與左側的兩個矩形相同,但右側的寬度略小(因爲它計算爲容器寬度的1/3而不是1/2) – user1054740 2013-02-18 01:16:18
如果第一個矩形的右側座標大於第二個矩形的左側,您只嘗試增加「numCollisions」? – bfavaretto 2013-02-18 01:34:35