Рисование кронштейна турнира (PHP & GD)
-
25-09-2019 - |
Вопрос
В настоящее время я работаю над рисованием турнирного кронштейна для одного из моих проектов. Похоже, работает рисовать меньшие скобки, но как только я доберусь до 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, что не является проблемой с момента его законного использования оперативной памяти, и я могу оправдать повышение максимумов для этого сценария (конечно, он не будет запускать каждую страницу в конечном скрипте, Изображение будет кэшировано).
В любом случае, как вы можете посмотреть, прогрессируете ли вы через изображения, они, кажется, получают все больше и больше.
Код здесь:http://pastebin.com/f5485b027.(Должен ли я быть в курсе как это, или встроенный? Я не был уверен)
Я полностью потерян как для того, как это исправить, поэтому, пожалуйста, введите идеи / предложения. Мне не нужно решение кода, мне просто нужно руководство по математике / позиционированию.
Спасибо, Мэтт
Решение
Кронштейны «правильно», нарисованные на основе алгоритма.
Вы вышли через код для проблемных случаев, особенно для $ y?
Я не уверен, как работает алговые работы (на самом деле не понимают использование $ вынос).
Но это то, что я придумал:
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...
}
}