رسم قوس البطولة (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
بعد ذلك ، أخرج من أخطاء ذاكرة الوصول العشوائي ، وهي ليست مشكلة بالفعل منذ استخدامها المشروع للذاكرة ، ويمكنني تبرير رفع الحد الأقصى لهذا البرنامج النصي (بالطبع ، لن يقوم بتشغيل كل تحميل صفحة في البرنامج النصي النهائي ، سيتم التخزين المؤقت للصورة).
على أي حال ، كما يمكنك أن ترى ما إذا كنت تقدم من خلال الصور ، يبدو أنها تحصل على المزيد والمزيد من المسار.
الكود هنا:http://pastebin.com/f5485b027(هل يجب أن أنشر كود مثل هذا ، أو مضمّن؟ لم أكن متأكدًا)
أنا ضائع تمامًا فيما يتعلق بكيفية إصلاح هذا ، لذا يرجى إدخال الأفكار/الاقتراحات. لا أحتاج إلى حل رمز ، أحتاج فقط إلى إرشادات حول الرياضيات/تحديد المواقع.
شكرا يا مات
المحلول
يتم رسم الأقواس "بشكل صحيح" بناءً على الخوارزمية.
هل تخطت من خلال الكود لحالات المشكلات وخاصة مقابل $؟
لست متأكدًا من كيفية عمل Algo (لا تفهم حقًا استخدام الوجبات الجاهزة $).
لكن هذا ما أود أن أتوصل إليه:
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...
}
}