Как мне Quadtrees!

Как я могу создать дерево квадрантов в PHP, возможно ли это вообще?

Я хотел бы макет "как сетка".

Таким образом, каждый «узел» имеет 4 «выхода» — север, юг, восток и запад.


У кого-нибудь есть пример PHP-кода Quadtree, потому что я не смог найти никакой документации специально для PHP :(

Я буду твоим лучшим другом... (возможно, там тоже есть какой-нибудь представитель).


person Barrie Reader    schedule 12.07.2010    source источник
comment
Дайте нам ключ, что вы имеете в виду? У вас может быть массив с каждым элементом, имеющим четырех детей?   -  person Ben Everard    schedule 12.07.2010
comment
Извините, я сходил с ума - вопрос обновлен   -  person Barrie Reader    schedule 12.07.2010
comment
Конечно, это возможно   -  person John La Rooy    schedule 12.07.2010
comment
Конечно, это возможно. Я не могу придумать причину, почему этого не было бы. Не могли бы вы?   -  person FrustratedWithFormsDesigner    schedule 12.07.2010


Ответы (3)


Если я правильно понял ваш вопрос, то, возможно, вы ищете следующее:

$map = array(
    array(array(1,2,3,4), array(1,2,3,4), array(1,2,3,4), array(1,2,3,4)),
    array(array(1,2,3,4), array(1,2,3,4), array(1,2,3,4), array(1,2,3,4)),
    array(array(1,2,3,4), array(1,2,3,4), array(1,2,3,4), array(1,2,3,4)),
    array(array(1,2,3,4), array(1,2,3,4), array(1,2,3,4), array(1,2,3,4))
);

$map[0][3][3] = "END OF ARRAY 1";
$map[1][3][3] = "END OF ARRAY 2";

и т.п.

person Neil Knight    schedule 12.07.2010
comment
Я не думаю, что это должно быть принятым решением - это просто трехмерный массив ... не совсем то, что ОП имеет в виду. - person Jeriko; 12.07.2010
comment
Это действительно заслуживает класса, который мог бы реализовать интерфейсы ArrayAccess Traversable, Countable. - person greg0ire; 12.07.2010
comment
@jeriko - как ОП, я знаю, что хотел спросить;) - person Barrie Reader; 24.02.2014

Так же, как и на любом другом языке. В PHP есть ссылки, переменные и даже некоторые возможности объектно-ориентированного программирования. Ничего не упущено, чтобы сделать реализацию дерева квадрантов еще более сложной, а тем более невозможной.

person Donnie    schedule 12.07.2010

Вы можете начать с просмотра двусвязных списков, которые дадут вам строку или столбец в вашей сетке (но не оба), а затем рассмотреть возможность расширения этого списка, чтобы отразить второе измерение.

person Mark Baker    schedule 12.07.2010