Darwinbots3/Tasks
From WikiManual
Contents
References
- Numerical Recipes in C
- Numerical Methods for Least Squared Problems by Ake Bjorck. ISBN: 0-89871-360-9
Azimuth tasks
- Construct a Cholesky decomposer. See the existing code for LU decomposition to get an idea of how the format works. Make sure to test thoroughly to see that it properly handles singular, non symmetric, and non positive definite matrices. See section 2.9 in Numerical Recipes in C.
- Construct a rectangular matrix class. Probably should name it MNRectangularMatrix. Use NSquareMatrix as a template. Be sure that the interface allows users to use a NSquareMatrix as a MNRectangularMatrix.
- Construct a QR decomposer. See the existing code for LU decomposition to get an idea of how the format works. Make sure to test thoroughly to see that it properly handles full rank, below full rank, and rectangular (full and non full rank) matrices. Since QR decomposer works on rectangular matrices, the interface will be a little different than for the others.
- Construct a sparse Cholesky decomposer. I don't have any references for this.
- Construct a sparse QR decomposer. There's whole sections on this in Numerical Methods for Least Squares Problems, but I haven't read them yet.
- Right now there are methods for finding roots of up to quartic polynomials analytically. No analytic methods exist beyond quartic, so we need an iterative general polynomial root finder. This is actually a sort of tricky problem from a numerical standpoint. See section 9.5 in Numerical Recipes in C ("Roots of Polynomials"). Because finding all the roots might be computationally expensive and probably unnecessary, allowing the user to extract roots one at a time with successive calls would work well. The primary use case in mind would involve finding the least positive real root >= 0 (collisions between cubic splines).
UI.Controls taks
- Build an exception console. Basically when Darwinbots is running, when an exception is encountered I want a special exception explorer to pop up on the screen that lets the user examine the exception (in a non modal way), log it in some ways (send an error report, save it to disk, save the currently running sim, etc.), and then ignore it and continue on with the sim (actually the sim should attempt to continue without the user present, but that's another story).
Graphics.Core tasks
- Build a skeletal animation system. Not strictly necessary for Darwinbots but would be nice to have. See the implementation of Collage to get an idea of what needs to happen.
- Build a GDI implementation. Consult the XNA implementation as necessary to get an idea of what to do. Should be pretty easy, since you don't have to worry about batching.
- Graphics.Core is woefully under tested because I wasn't really certain what I was doing as I was doing it, as far as interface goes. Just go back through and try to test as much of the code that's untested at the moment as possible.
Non module specific
- Code coverage - Each module (hopefully) has some unit tests. Right now there's no way to tell how much of a module is being tested and how much is completely untested. Either find or build some tools that allow us to determine how much of the code is covered by the unit tests.
- Profiling - Likewise no tools exist right now to profile the code for performance bottlenecks. Either find or build a tool to aid in profiling.