Rotating/Projecting a 3D cube on a PyGame window.
WARNING: If you want better performance, use numpy to set up all matrices/coordinates and use its built-in matrix multiplication method. The ijk algorithm used in the custom matrix multiplication method is extremely inefficient (O(n^3)). The reason why I used it anyway was because I wanted to code the project from scratch without numpy and performance was not a constraint.
Youtube Tutorial: https://www.youtube.com/watch?v=sQDFydEtBLE