--- 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