Physics
Baraff's LCP algoritm, as used in ODE (and JOODE)
http://www.cs.cmu.edu/~baraff/papers/sig94.pdfand why it doesn't always work:
http://crl.nmsu.edu/users/sb/papers/thesis/node20.htmlGood introductory material
http://www.d6.com/users/checker/dynamics.htmCollision detection
BSP trees. Can be used to classify space quickly
http://www.faqs.org/faqs/graphics/bsptree-faq/The OBB tree, provides a
fast boolean result for trimesh collisions
http://citeseer.ist.psu.edu/gottschalk96obbtree.htmlDEEP, Dual-space Expansion for Estimating Penetration Depth.
http://www.cs.unc.edu/~geom/DEEP/icra02.pdfSee
http://www.java-gaming.org/forums/index.php?topic=10976.195 for hints on deciphering this paper
Example of the sweep line algorithm, the fore father of initial planar subdivision algorithms (but a bit outdated now)
http://www.lupinho.de/gishur/html/Sweeps.html Math:-
JAMA is comprised of six Java classes: Matrix,
CholeskyDecomposition, LUDecomposition, QRDecomposition, SingularValueDecomposition and
EigenvalueDecomposition.
http://math.nist.gov/javanumerics/jama/Wikopedia's writup of Cholesky is fairly easy to read. Cholesky decompositions are used to solve linear equations. They use alot of square roots though.
http://en.wikipedia.org/wiki/Cholesky_decompositionThe Orbital library is a class library providing object-oriented representations and algorithms for logic, mathematics and artificial intelligence. It comprises theorem proving, computer algebra,
search and planning, as well as machine learning algorithms.
http://www.functologic.com/orbital/ECJ is a research Evolutionary Computing system written in Java. (Good for optimizations)
http://cs.gmu.edu/~eclab/projects/ecj/