Я занимался этим в течение последнего месяца и придумал, как мне кажется, довольно хорошее решение. Это не так быстро, как чистая матрица, но имеет то преимущество, что оно бесконечно расширяемо (в пределах int
.)
По сути, это бинарный раздел пространства, который строится вверх (а не вниз, как квадродерево). Если вы записываете в точку за пределами выделенного в данный момент пространства матрицы, он генерирует больший узел и расширяется. Если большинству дочерних узлов узла назначены матрицы, он объединяет их в себя и удаляет их ссылки. Это означает, что чем больше четких границ вы используете, тем выше производительность, тем больше эта структура действует как матрица.
Я разместил свой код здесь , и в будущем постараюсь написать какую-нибудь демоверсию и перейти на более качественный хостинг.
Не стесняйтесь, дайте мне знать, что вы думаете, или если у вас есть какие-либо вопросы по этому поводу.