diff options
| author | sotech117 <michael_foiani@brown.edu> | 2023-12-07 16:23:20 -0500 |
|---|---|---|
| committer | sotech117 <michael_foiani@brown.edu> | 2023-12-07 16:23:20 -0500 |
| commit | caa765bff49d54217b75aaf0e7acf4e5392a11e4 (patch) | |
| tree | 9b92914dfb88b99599e8e60e4512e9e9ea9a25db /src/accelerate/kdtree.h | |
| parent | a9274459443f1d560d7580a162deb581549980cb (diff) | |
upload base code
Diffstat (limited to 'src/accelerate/kdtree.h')
| -rw-r--r-- | src/accelerate/kdtree.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/accelerate/kdtree.h b/src/accelerate/kdtree.h new file mode 100644 index 0000000..e33aa59 --- /dev/null +++ b/src/accelerate/kdtree.h @@ -0,0 +1,53 @@ +#ifndef KDTREE_H +#define KDTREE_H +#include "utils/sceneparser.h" +#include <queue> +#include <vector> + +typedef struct { + glm::vec4 xmax; + glm::vec4 xmin; + glm::vec4 ymax; + glm::vec4 ymin; + glm::vec4 zmax; + glm::vec4 zmin; + glm::vec4 center; +} BoundingRegion; + +typedef struct KdShape +{ + RenderShapeData shape; + BoundingRegion region; +} KdShape; + +class KdTree +{ +public: + + KdTree(int pDimension, float pSplitCoord); + + bool empty; + int dimension; + float splitCoord; + std::vector<KdShape> shapesWithinBounds; + void insert(KdShape shape); + + KdTree *leftChild; + KdTree *rightChild; + + // todo: make basis a matrix + static BoundingRegion transformBoundingRegion(BoundingRegion region, glm::mat4 transformationMatrix, glm::vec3 basis=glm::vec3(1.0f, 1.0f, 1.0f)); +}; + +const static BoundingRegion OBJECT_BOUNDS{ + glm::vec4(.5f, 0.f, 0.f, 1.f), + glm::vec4(-.5f, 0.f, 0.f, 1.f), + glm::vec4(0.f, .5f, 0.f, 1.f), + glm::vec4(0.f, -.5f, 0.f, 1.f), + glm::vec4(0.f, 0.f, .5f, 1.f), + glm::vec4(0.f, 0.f, -.5f, 1.f), + glm::vec4(0.f, 0.f, 0.f, 1.f) +}; + + +#endif // KDTREE_H
\ No newline at end of file |
