网格划分和快速查找

时间:2014-02-19 19:45:37

标签: c++ data-structures raytracing

我正在写一个光线跟踪器,我正在尝试对一些网格数据(点和面)进行分区,以便我可以计算交叉点。

目前,对于每个交叉点计算,我必须查找每个面并查看光线是否与它相交。我试图找到一种更快的方法,即只查找相关的面孔。

用于存储图形数据的好数据结构是什么(kd树?同等分区空间?) 如何在给出射线的情况下查找相关的空间/面孔?

PS:我正在使用C ++

1 个答案:

答案 0 :(得分:1)

空间分区数据结构(BSP树,k-D树或八叉树),或者更一般地说是边界卷层次结构(AABB树)应该完成这项工作。有关从网格构建BSP树及其遍历的相关问题,请参阅this answer。 C ++库CGAL提供了一个具有所需构造和查询的AABB树数据结构。