kd-tree building - check all axes for best split, add additional shape-bbox check
extent Container bounds by Eps to fix invisible triangles on borders
new Camera constructor with more intuitive lookat/up vectors
fix camera axes (mirrored images)
better camera angle-of-view
change capitalization of addShape and addLight
Bugs==== * (none known)Future Plans============ * changing main ray tracing algoritm to more flexible architecture with a Sampler object: - enhance Sampler to support subsampling * namespace * kd-tree: - optimize structures - optimize construction: use box-shape intersection instead of bounding boxes of shapes - optimize traversal -- no std::vector, no dynamic memory allocation - save/load * textures (3D procedural, pixmaps) * update Python binding: Camera, other new classes * stochastic oversampling * absorbtion of refracted rays in dense materials (can be computed using shape distance and some 'absorbance' constant) * implement efficient AABB-ray intersection using Plucker coordinates * generalization: Camera "shader" (ray generator), surface shader and maybe light & background shaders * unify capitalization of method names in C++ and PythonNew Classes?============shapes.h -- Triangle, Spherescene.h -- Ray, Light, Camera, Scenematerial.h -- Material, Texturereader.h -- Reader, WavefrontReaderwf = new WavefrontReader()wf.setContainer(top)wf.setTransform(monkey_pos_matrix)wf.read("monkey.obj")// more transform&readsdestroy wfScene scene -- container with shapes, a camera and lightsscene = new Scene()scene.setCamera(new Camera(eye, u, v, p))scene.addLight(new PointLight(pos, color))rt.setScene(scene)rt.render(w,h)constructors have zero or one parameter by default -- the object to copy data frommore parameters -- the data (ray origin and direction)