02.22
That pretty much sums it up. I think I’m going to start using this more often, but I have to decide whether or not this will be my technical blog or my everything-else blog.
Mmm… let’s just say I’ll lean technical.
So, project ideas. I know, I know, I’m full of them (and it), but I’m actually working on these.
- Automatic differentiation in Common Lisp. Since it’s often implemented by source transformation, this is kind of a perfect fit for CL. Just in case you don’t know, automatic differentiation is a technique for automatically calculating exact derivatives of an expression using only the definition of the expression. It doesn’t use a difference quotient, and you don’t have to explicitly define the gradient either. The Wikipedia page has a decent explanation, as does this site on AD. I use source transformation to dual numbers in my soon-to-be-released implementation. I’ll post a link when I upload it (probably in the next few days).
- Ongoing work on t-ray. Last term, as part of a class assignment, I upgraded t-ray to support path-tracing. The code is still a bit…. wonky, though, so I plan to clean it up a bit. I want to slow down on the feature creep a bit, and just work on making it 1) fast and 2) usable. (Note the order.) The one exception to that, though, is implicit equations. I should be able to add parametric equations easily (by triangulating them and rendering them as meshes). With my automatic differentiator, I can even produce exact normals (rather than writing a lot of topological mesh code or hacking away to compute approximations with face normals). I also want to implement a sphere-tracing paper for surface intersection, so that I can render (exact) implicit surfaces as well.