-
Notifications
You must be signed in to change notification settings - Fork 0
/
BoxTreeNode.h
49 lines (35 loc) · 1.03 KB
/
BoxTreeNode.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//
// BoxTreeNode.h
// CSE168
//
// Created by Sebastian Dang on 4/16/17.
// Copyright © 2017 Sebastian Dang. All rights reserved.
//
#ifndef BoxTreeNode_h
#define BoxTreeNode_h
#include <glm/glm.hpp>
#include <stdio.h>
#include "Object.h"
#include "Triangle.h"
#define MaxTrianglesPerBox 10
class BoxTreeNode {
public:
BoxTreeNode();
~BoxTreeNode();
bool Intersect(const Ray &ray, Intersection &hit);
bool IntersectTriangles(const Ray &ray, Intersection &hit);
bool IntersectVolume(const Ray &ray, float &t);
void Construct(int count, Triangle **tri);
private:
//At each node, axis aligned box based on x,y,z of min and max.
glm::vec3 BoxMin, BoxMax;
//Typically represented as binary trees with zero or two children.
BoxTreeNode *Child1, *Child2;
//Usually 10 or less triangles at the leaf.
Triangle *Tri[MaxTrianglesPerBox];
//Count the number of triangles.
int numTriangles;
//Flag to keep track of leaves.
bool leaf;
};
#endif /* BoxTreeNode_h */