2010-02-03 3 views
1

Je suis en train de dessiner un support de tournoi pour un de mes projets. Il semble fonctionner en tirant des crochets plus petits mais une fois que j'arrive à 16, il commence à agir.Dessiner une parenthèse de tournoi (PHP & GD)

Suivez à travers les liens et voir comment il tombe sur place après 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

Après que je reçois des erreurs de RAM, ce qui est pas vraiment un problème puisque son utilisation légitime de ram, et je peux justifier élever les valeurs maximales pour ce script (bien sûr, il ne lancera pas chaque chargement de page dans le script final, l'image sera mise en cache).

Quoi qu'il en soit, Comme vous pouvez le voir, si vous progressez à travers les images, elles semblent être de plus en plus décalées.

Le code est ici: http://pastebin.com/f5485b027 (? Dois-je posterai le code comme celui-ci, ou en ligne, je n'étais pas sûr)

Je suis complètement perdu quant à la façon de résoudre ce problème, merci idées entrée/suggestions. Je n'ai pas besoin d'une solution de code, j'ai juste besoin de conseils sur les mathématiques/le positionnement.

Merci, Matt

Répondre

1

Les supports sont "correctement" tirés basé sur l'algorithme.

Avez-vous parcouru le code pour les cas de problème en particulier pour $ y?

Je ne sais pas comment fonctionne l'algo (ne comprends pas vraiment l'utilisation du $ takeAway).

Mais ce que je viendrais avec:

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... 
    } 
}