include/container.h
branchpyrit
changeset 98 64638385798a
parent 95 ca7d4c665531
--- a/include/container.h	Thu May 15 19:15:57 2008 +0200
+++ b/include/container.h	Mon May 19 22:59:04 2008 +0200
@@ -35,7 +35,10 @@
 using namespace std;
 
 /**
- * general container
+ * General container for shapes.
+ *
+ * Does very simple intersection test:
+ * all shapes are tested and the nearest intersection is returned.
  */
 class Container
 {
@@ -47,21 +50,36 @@
 	Container(): bbox(), shapes() {};
 	virtual ~Container() {};
 
+	/** add pointer to shape to the container */
 	virtual void addShape(const Shape* aShape);
 	//void addShapeNoExtend(const Shape* aShape) { shapes.push_back(aShape); };
+
+	/**
+	 * find nearest intersection with shapes in container
+	 * @param[in] origin_shape  this shape should be avoided from the test
+	 * @param[in] ray           the ray
+	 * @param[out] nearest_distance  the nearest allowd distance of intersection;
+	 *                               it is updated when closer intersection is found
+	 * @return intersected shape or NULL if no intersection was found
+	 */
 	virtual const Shape *nearest_intersection(const Shape *origin_shape, const Ray &ray,
 		Float &nearest_distance);
 
-	virtual void optimize() {};
-
-	ShapeList & getShapes() { return shapes; };
-
-	virtual ostream & dump(ostream &st) const;
-
+	/** intersect with whole ray packet */
 #ifndef NO_SIMD
 	virtual void packet_intersection(const Shape* const* origin_shapes, const RayPacket &rays,
 		Float *nearest_distances, const Shape** nearest_shapes);
 #endif
+
+	/** build acceleration structures */
+	virtual void optimize() {};
+
+	/** get reference to the shape list */
+	ShapeList & getShapes() { return shapes; };
+
+	/** write textual representation of the acceleration structure
+	 * and shapes in list to the stream */
+	virtual ostream & dump(ostream &st) const;
 };
 
 #endif