Я работаю над инструментом, для которого требуется 3D-движок «воксел». Под этим я подразумеваю, что это будет включать добавление и удаление кубов из сетки. Для управления этими кубами мне нужна структура данных, которая позволяет быстро вставлять и удалять. Проблема, которую я видел с деревьями и окнами k-d, состоит в том, что, похоже, им часто нужно было воссоздавать (или, по крайней мере, перебалансировать) из-за этих операций.Автоматическая балансировка (или дешево сбалансированная) 3D-структура данных
Прежде чем я вскочил, я хотел получить мнение о том, каким будет лучший способ сделать это.
Некоторые подробности:
- х, у, г положение в целочисленном пространстве
- должен быть достаточно эффективным для приложения реального времени
- нет жестких ограничений по количеству кубы, которые будут использоваться. По всей вероятности, число наиболее часто может быть несущественно низкой (< 100), однако я хотел бы иметь инструмент обрабатывать столько кубиков как можно
Я думаю, главный вопрос заключается в то, что это лучший способ управлять тем, что по существу является трехточечными данными, таким образом, чтобы они могли обрабатывать частые вставки и удаления?
(Нет, я не делаю Minecraft)
Если вам нужно только вставить и удалить, используйте простую хеш-таблицу с (x, y, z) в качестве ключа. Но я предполагаю, что в какой-то момент вам также понадобится сделать пространственные запросы, верно? – fortran
На данный момент я не уверен.Мои текущие требования фактически не требуют пространственных запросов, но я мог видеть, что они необходимы в какой-то момент. Я, скорее всего, начну с хеш-таблицы для простоты, а затем перейду к октетам по мере необходимости. Благодаря! – Kyle