2010-02-03 44 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... 
    } 
}