From caa765bff49d54217b75aaf0e7acf4e5392a11e4 Mon Sep 17 00:00:00 2001 From: sotech117 Date: Thu, 7 Dec 2023 16:23:20 -0500 Subject: upload base code --- src/accelerate/kdtree.h | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/accelerate/kdtree.h (limited to 'src/accelerate/kdtree.h') 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 +#include + +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 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 -- cgit v1.2.3-70-g09d2