Я намагаюся реалізувати структуру найближчого сусіда для використання в планувальнику руху RRT. Для того, щоб зробити краще, ніж лінійний брутальний пошук найближчого сусіда, я хотів би реалізувати щось на кшталт kd-дерева. Однак, схоже, що класична реалізація дерева kd передбачає, що кожен вимір простору можна розділити на "лівий" і "правий". Це поняття, схоже, не стосується, наприклад, неєвклідових просторів, таких як SO (2).
Я працюю з рукою послідовного маніпулятора з повністю обертовими зв'язками, тобто кожен вимір простору конфігурації робота є SO (2), а отже, не євклідовим. Чи можна змінити алгоритм kd-tree для обробки таких типів підпросторів? Якщо ні, чи існує інша структура найближчого сусіда, яка може обробляти ці неєвклідові підпростори, одночасно просте оновлення та запит? Я також подивився на FLANN , але з їх документації мені не було зрозуміло, чи можуть вони обробляти неєвклідові підпростори.