Space Partitioning
Course: CS350
Instructor: Dr. Pushpak Karnick
Type: Solo project
Language: C++
Overview
The objective of this subject was to learn and understand multiple space partitioning techniques, used for both collision detection and graphics optimization. As part of the subject I programmed some of the techniques explained in class, here is the work I did:
Bounding Volume Hierarchy
This part consisted on computing the AABB and bounding Sphere for any mesh, the sphere computation was made using different approaches: centroid, Ritter’s boundign sphere and applying iterative refinement over the Ritters sphere to get a tighter result.
Constructed a Bounding Volume Hierarchy using different approaches, this could BVH can be used for the broad phase of a collision detection system. The construction modes I implemented are:

BottomUp: Merge the two BV that generate the smaller BV until we only have one BV left (the first BVs we take are the objects).

TopDown: Compute the BV that contains all objects and then split it in two from the axis where the BV scale is bigger, I implemented three methods to determine where to split: object median, object mean and spatial meadian
Octree & BSPtree
Learning Outcomes
After the completion of this course, I understand the theory behind the different spatial data structures, culling methods, and spatial algorithms. I written various intersection functions and spatial partitioning algorithms in a provided framework.