--- a/src/kdtree.h Fri Nov 30 00:44:51 2007 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-#ifndef KDTREE_H
-#define KDTREE_H
-
-#include <vector>
-#include <iostream>
-#include <fstream>
-
-#include "scene.h"
-
-using namespace std;
-
-class ShapeList: public vector<Shape*>
-{
-};
-
-class Container
-{
-protected:
- BBox bbox;
-public:
- ShapeList shapes;
- Container(): bbox(), shapes() {};
- virtual ~Container() {};
- virtual void addShape(Shape* aShape);
- //void addShapeNoExtend(Shape* aShape) { shapes.push_back(aShape); };
- virtual Shape *nearest_intersection(const Shape *origin_shape, const Ray &ray,
- float &nearest_distance);
- virtual void optimize() {};
-};
-
-class KdNode
-{
- float split;
- short axis; /* 0,1,2 => x,y,z; 3 => leaf */
-public:
- union {
- KdNode *children;
- ShapeList *shapes;
- };
-
- KdNode() : axis(3) { shapes = new ShapeList(); };
- ~KdNode();
-
- void setAxis(short aAxis) { axis = aAxis; };
- short getAxis() { return axis; };
-
- void setSplit(float aSplit) { split = aSplit; };
- float getSplit() { return split; };
-
- void setLeaf() { axis = 3; };
- bool isLeaf() { return axis == 3; };
-
- KdNode *getLeftChild() { return children; };
- KdNode *getRightChild() { return children+1; };
-
- void addShape(Shape* aShape) { shapes->push_back(aShape); };
-
- void subdivide(BBox bbox, int depth);
-};
-
-class KdTree: public Container
-{
- KdNode *root;
- bool built;
- int max_depth;
-public:
- KdTree() : Container(), root(NULL), built(false), max_depth(32) {};
- ~KdTree() { if (root) delete root; };
- void addShape(Shape* aShape) { Container::addShape(aShape); built = false; };
- Shape *nearest_intersection(const Shape *origin_shape, const Ray &ray,
- float &nearest_distance);
- void optimize() { build(); };
- void build();
- void save(ostream &str, KdNode *node = NULL);
- void load(istream &str, KdNode *node = NULL);
- void setMaxDepth(int md) { max_depth = md; };
-};
-
-#endif