Хранение данных в узле октодерева - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь рекурсивно построить октре в C # как часть реализации Dual Contouring (https://www.cse.wustl.edu/~taoju/research/dualContour.pdf). Алгоритм предлагает использовать три типа узлов октодерева, так как некоторые данные относятся только к определенному узлу . Три типа узлов имеют несколько общих свойств, таких как позиция, размер и индекс буфера вершин, однако каждый из них также должен хранить некоторые уникальные данные. Пример одного из типов узлов показан ниже вместе с уникальными полями, принадлежащимик нему.

Класс HeterogeneNode: OctreeNode

-int битовое поле

-float qefResult

-Vector3 [] points

-Vector3 [] normals

Я планирую иметь базовый класс OctreeNode и массив OctreeNode, в котором я буду хранить все узлы. Однако я не могу получить доступ к уникальным свойствам HeterogeneNode таким образомесли я не опустил его до OctreeNode, который я считаю плохим дизайном.

Я также пытался иметь только класс OctreeNode и помещатьуникальные данные в структуре.Это кажется неправильным, поскольку это означало бы, что для структурных полей должны быть заданы значения по умолчанию для узлов, которым не нужно хранить дополнительные данные.

Есть ли лучший способ решения этой проблемы? Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...