2014-02-19 1 views
0

Я пишу raytracer, и я пытаюсь разбить некоторые данные сетки (точки и грани), поэтому я могу рассчитать пересечения.mesh разбиение и быстрый поиск

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

Что такое хорошая структура данных для хранения данных графа (kd tree? Равнораздельное пространство?) Как я могу найти соответствующие пространства/грани с учетом луча?

PS: Им с помощью C++

+0

[METIS] (http://glaros.dtc.umn.edu/gkhome/metis/metis/overview), [SCOTCH] (http://www.labri.fr/perso/pelegrin/scotch/) –

ответ

1

пространственной структуры разбиения данных (на BSP дерево, к-D дерева или октодерева), или даже в более общем случае иерархии ограничивающий объем (AABB дерево) должен делать эту работу. См. this answer к соответствующему вопросу о построении дерева BSP из сетки и ее обхода. Библиотека C++ CGAL предоставляет структуру данных дерева AABB с требуемой конструкцией и запросом.