Немного информации о проектных решениях до сих пор... Я разработал octree-структуру, которая может хранить точки. Я решил ограничить рекурсию "поколений" на основе определенного базового количества вокселей. Ребенок-узлы создаются только при добавлении точек в этот node. Это не динамическое графическое приложение - этот октет и объекты в нем статичны, поэтому предварительная обработка для повышения производительности не вызывает беспокойства.
Теперь я хотел бы добавить "фигуры" в свою октету - в частности, поверхностную сетку, состоящую из треугольников. Вершины этих треугольников не соответствуют точкам, хранящимся в окте. Как хранить эти фигуры в октете? Я вижу два варианта...
Серые узлы "пусты" в том, что у них нет фигур. В альтернативе 1 формы сохраняются в каждом node, который они пересекают, т.е. node 1a содержит формы 1 и 4c и 4d share2. В альтернативе 2 формы сохраняются только в наименьшем node, который они пересекают, т.е. node 1a содержит shape1 и node 4 содержит shape2.
Большинство сообщений на октетах, которые я видел, предполагают Alt1, но они никогда не объясняют, почему. Alt2 имеет больше смысла для меня и создаст дополнительную работу для тех форм, которые находятся на границах node. Почему Alt1 предпочтительнее?
Изменить: Чтобы уточнить, мой язык реализации - С++, поэтому я бы предпочел примеры реализации на этом языке, но вопрос не зависит от языка. Извините, если это неправильное использование тегов.
Edit2: Несмотря на то, что он не имеет прямого отношения к вопросу о хранении формы, эта ссылка содержит хорошее обсуждение обходного пути, которое стоит за вопросом, Я думал, что это может помочь любому, кто заинтересован в работе над этим вопросом.