I began writing MathGeoLib some time around the summer of 2011. The library has come a long way since and it now contains a range of common geometry types and different operations related to them. One of the recurring issues has been the problem of computing minimal enclosing shapes for 3D meshes for culling and collision detection. Code for generating minimum enclosing axis-aligned bounding boxes (AABB) was included in MathGeoLib right from the start, and finding minimum enclosing spheres was added almost immediately in November 2011. Convex hull computation was added in 2012. These covered three very common geometric collision shapes, but for oriented bounding boxes (OBB), another very common collision primitive, MathGeoLib did not have anything to offer for a long time. This was due to the fact that there did not really exist any good algorithms for finding minimum enclosing OBBs, and brute force or principal component analysis (PCA) were the most common approaches. This means a choice of getting either practically the optimal result extremely slowly, or possibly an arbitrarily bad result very quickly. A number of intelligent numerical optimization algorithms have been crafted to help this issue, but since those are not able to give any guarantees either, and I could not find any reproducible implementations, they did not feel right.
Last Updated (Friday, 05 June 2015 13:08)
When doing research that involves concrete programming, it is absolutely important to be able to confirm that the code and the results are correct. Last year when I was writing the survey on Rectangle Bin Packing, I used a battery of test functions which affirmed that the generated packings were legal for each algorithm. However, it does not guarantee the quality of the packings, and the results, while correct, can still be suboptimal.
Last Updated (Sunday, 08 January 2012 15:29)
Along the years, I have accumulated tons of different utility functions for performing games-related geometric tests. Recently, I was faced by a task of implementing a generic script API for math and geometry handling. It would become a part of a generic API for a script-driven 3D engine. The scripting system would be used potentially by people who are very unfamiliar with scripting, and possibly even with mathematics. Around the same time, I was investigating developing code for a project that uses the Android NDK platform, and was looking for a math library to use on that architecture.