2010-02-03 77 views
1

我目前正在爲我的一個項目繪製錦標賽括號。它似乎正在繪製更小的括號,但一旦我到了16,它開始行動起來。繪製錦標賽括號(PHP&GD)

按照通過的聯繫,並看到後怎麼掉下來的地方8.

http://www.mattdsworld.com/mmaplayer/index.php/tournament/viewBracket/2

http://www.mattdsworld.com/mmaplayer/index.php/tournament/viewBracket/4

http://www.mattdsworld.com/mmaplayer/index.php/tournament/viewBracket/8

http://www.mattdsworld.com/mmaplayer/index.php/tournament/viewBracket/16

http://www.mattdsworld.com/mmaplayer/index.php/tournament/viewBracket/32

http://www.mattdsworld.com/mmaplayer/index.php/tournament/viewBracket/64

http://www.mattdsworld.com/mmaplayer/index.php/tournament/viewBracket/128

後,我得到了RAM錯誤,這是不是真的,因爲它的合法使用RAM的問題,我可以證明提高最大值此腳本(當然,它不會運行最終腳本中的每個頁面加載,圖像將被緩存)。

無論如何,正如你可以看到如果你通過圖像進步,他們似乎越來越偏離軌道。

的代碼是在這裏: http://pastebin.com/f5485b027 (?我應該張貼這樣的代碼,或內聯我不知道)

我完全失去了對如何解決這個問題,所以請輸入思路/建議。我不需要代碼解決方案,我只需要數學/定位指導。

謝謝, 馬特

回答

1

括號內是「正確」的基礎算法上繪製。

您是否已經完成問題案例的代碼,尤其是$ y?

我不確定算法是如何工作的(不真正理解$ takeAway的用法)。

但是,這是我會想出什麼樣的:

for ($k = 1; $k < ($rounds + 1); $k++) 
{ 
    // Calculate currLeftDraw and currRightDraw Here... 

    $spacing = 60 * pow(2, ($k - 1)); 
    $firstY = ($spacing/2) - 30; 

    for ($i = 0; $i < ($sizePlayers/(pow(2, $k))); $i++) 
    { 
     $yPos = $firstY + ($i * $spacing); 

     // Rest of code here... 
    } 
}