Однородные пространственные ячейки на поверхности сферы - PullRequest
0 голосов
/ 10 мая 2018

Существует ли система пространственного поиска или система биннинга, которая работает на поверхности (3D) сферы? У меня есть требования, которые

  • Контейнеры должны быть одинаковыми (чтобы вы могли смотреть в постоянном времени, если существует точка на расстоянии r от любого места на сфере, учитывая постоянную r.)

  • Количество бинов должно быть максимально линейным относительно площади поверхности сферы. (В качестве альтернативы, увеличение разрешения поверхности сетки не должно приводить к тому, что она будет расти быстрее, чем область, которую она отображает.)

Я уже рассмотрел

  • Сферические координаты: не очень хорошо, потому что созданные ячейки крайне неоднородны, что делает их бесполезными для проверки близости.

  • Сетки куба : Меньше искажений, чем сферические координаты, но все еще очень трудно определить, какие ячейки искать для данного запроса.

  • 3D-воксельное объединение: тратит впустую весь внутренний объем сферы с пустыми ячейками, которые никогда не будут использоваться (а также пустые ячейки в 6 углах ограничивающего куба). Требования к пространству растут с O(n sqrt(n)) с увеличением площади поверхности сферы.

  • kd-Trees: плохо работают в 3D и имеют техническую логарифмическую сложность, не постоянны для запроса.

Моя лучшая идея для решения заключается в использовании метода биннинга трехмерных вокселей, но каким-то образом исключая воксели, которые сфера никогда не пересечет. Однако я понятия не имею, как определить, какие вокселы исключить, или как рассчитать индекс для такой структуры, учитывая местоположение запроса на сфере.


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

1 Ответ

0 голосов
/ 11 мая 2018

Мое предложение было бы вариантом сферических координат, таким образом, чтобы полярный угол не выбирался равномерно, а вместо этого синус этого угла выбирался равномерно.Таким образом, элемент области sinφ dφ dΘ сохраняется постоянным, что приводит к плиткам той же области (хотя и с переменным соотношением сторон).

На полюсах объедините все плитки в один дискообразный многоугольник.

Другая возможность - проецировать на сферу правильный икосаэдр и триангулировать полученные таким образом сферические треугольники.Это требует немного сферической тригонометрии.

...