https://hypycajusibavaf.runrevlive.com/interactive-computer-graphics-a-top-down-approach-with-opengl-2nd-ed-book-12443et.php