src/kdtree.h
branchpyrit
changeset 11 4d192e13ee84
parent 10 f9fad94cd0cc
child 12 f4fcabf05785
equal deleted inserted replaced
10:f9fad94cd0cc 11:4d192e13ee84
    63 protected:
    63 protected:
    64 	BBox bbox;
    64 	BBox bbox;
    65 public:
    65 public:
    66 	ShapeList shapes;
    66 	ShapeList shapes;
    67 	Container(): bbox(), shapes() {};
    67 	Container(): bbox(), shapes() {};
       
    68 	virtual ~Container() {};
    68 	virtual void addShape(Shape* aShape);
    69 	virtual void addShape(Shape* aShape);
    69 	//void addShapeNoExtend(Shape* aShape) { shapes.push_back(aShape); };
    70 	//void addShapeNoExtend(Shape* aShape) { shapes.push_back(aShape); };
       
    71         virtual Shape *nearest_intersection(const Shape *origin_shape, const Ray &ray,
       
    72 		float &nearest_distance);
    70 	virtual void optimize() {};
    73 	virtual void optimize() {};
    71 };
    74 };
    72 
    75 
    73 class KdNode
    76 class KdNode
    74 {
    77 {
   103 	KdNode *root;
   106 	KdNode *root;
   104 	bool built;
   107 	bool built;
   105 public:
   108 public:
   106 	KdTree() : Container(), built(false) {};
   109 	KdTree() : Container(), built(false) {};
   107 	void addShape(Shape* aShape) { Container::addShape(aShape); built = false; };
   110 	void addShape(Shape* aShape) { Container::addShape(aShape); built = false; };
   108 	void optimize(); // build kd-tree
   111 	void build();
       
   112 	void optimize() { build(); };
   109 	void save(ostream &str, KdNode *node = NULL);
   113 	void save(ostream &str, KdNode *node = NULL);
       
   114 	void load(istream &str, KdNode *node = NULL);
   110 };
   115 };
   111 
   116 
   112 #endif
   117 #endif