Попробуйте отладку по USB - сайт будет открываться на мобилке, а панель разработчика будет у вас на компьютере. Так можно пощупать код на конкретном устройстве и понять что-нибудь полезное. https://remontka.pro/usb-debug-enable-android/
Количество кругов в каждой фракции нужно сделать фиксированным, потому что целиком заполненная фигура - это страница архива, и эти страницы нужно отображать.
SVG позволяет вставить внутрь себя картинку и обрабатывать onclick?
Вот что пока выходит у меня:
Некрасиво смотрятся только два больших круга рядом. То есть, маленькие и средние можно валить в кучу.
Треугольник разбить на "строки", равные по высоте высоте самого большого шара.
Алгоритм, перебирающий массив кругов(размер шара):
1. если размер большой и рядом нет другого круга: проверить, влезает ли круг рядом с предыдущим. если нет, закинуть его обратно в массив(например, в конец). Если да - разместить.
2. если размер маленький и круг помещается рядом с предыдущим - поместить.
3. если размер маленький и круг не помещается, перейти на новую строку и поместить.
Но есть мнение, что не стоит так мудрить.
Если представить треугольник, как прямоугольный div, который повернули и растянули с помощью css transform, а потом в этот div c помощью masonry добавить шары(каждый шар - div со скругленными углами)?
А если так:
нужно разместить 8 больших кругов, 16 маленьких, 24 крошечных.
1. Размещаем в рандомном порядке большие, главное, чтобы не выходили за границы фигуры.
2. Ищем пустые места, достаточные для маленьких, размещаем в них маленькие круги, чтобы они касались больших.
3. Ищем пустые места, достаточные для крошечных, размещаем в них крошечные круги, чтобы они касались больших и маленьких.
?
А запросы к БД, связанные с вытаскиванием этого ресурса, вытаскиванием сниппета и т.д. не испортят дело? В чем плюс такого решения по сравнению со статическим файлом в недрах сайта?
Но у меня в переменную пишется __PHP_Incomplete_Class_Name adminUser