Я полагаю, что если вы осторожны (вам, возможно, придется реализовать свое собственное quadtree), вы можете «обновить» quadtree без особых усилий и без копирования - это просто вопрос префикса всех существующих адресов с помощью некоторых битов (адресов). находятся в двоичном формате, каждый бит дерева представляет деление существующего юниверса пополам в одном измерении или другом).

вык к кодированию на PHP, но я не очень хорошо разбираюсь в Java, и это было проблемой в течение некоторого времени. Я ожидаю, что это будет довольно простое решение, однако я не могу найти ни одного хорошего примера кода, каким бы образом я его не искал, так что вот так:

Я программирую игру, которая происходит в двумерном случайно сгенерированном бесконечном мире на карте на основе тайлов (придирки: я знаю, что она не будет по-настоящему бесконечной. Я просто ожидаю, что мир будет довольно большим). Обычный подход многомерного массива map [x] [y] начинался как базовая идея, но, поскольку Java не предоставляет возможности для нецелочисленных (то есть отрицательных) изменений ключа массива, как это делает PHP, я не могу должным образом иметь (- x, + x, -y, + y) система координат с ключами массива.

Мне нужно иметь возможность находить объекты на плитке по определенной координате x, y, а также находить "соседние плитки" определенной плитки. (Тривиально, если я могу получить getObjectAt (x, y), я могу получить (x + 1, y) и так далее)

Я читал о четырехугольных деревьях и R-деревьях и тому подобное. Концепция интересна, однако я не видел ни одного хорошего, простого примера реализации в Java. И, кроме того, я не совсем уверен, что это именно то, что мне нужно.

Любой совет приветствуется

Спасибо

Ответы на вопрос(11)

Ваш ответ на вопрос