绘制锦标赛支架(PHP& GD)

时间:2010-02-03 04:50:51

标签: php gd leaderboard

我正在为我的一个项目绘制锦标赛支架。它似乎正在绘制较小的括号,但一旦我达到16,它就会开始表现。

按照链接进行操作,看看它在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 个答案:

答案 0 :(得分: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...
    }
}