src/kdtree.h
branchpyrit
changeset 22 76b7bd51d64a
parent 21 79b516a3803d
child 23 7e258561a690
--- 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