1

我目前正在为我的一个项目绘制锦标赛支架。它似乎正在绘制更小的括号,但一旦我达到 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 (我应该发布这样的代码,还是内联?我不确定)

我完全不知道如何解决这个问题,所以请输入想法/建议。我不需要代码解决方案,我只需要数学/定位方面的指导。

谢谢,马特

4

1 回答 1

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...
    }
}
于 2010-02-03T05:43:22.090 回答