Separating Axis Theorem EXPLAINED | Coding a 2D Physics Engine in Java #11

Channel:
Subscribers:
59,500
Published on ● Video Link: https://www.youtube.com/watch?v=Nm1Cgmbg5SQ



Duration: 23:29
9,097 views
0


Join the Discord: https://discord.gg/4tHeAkxNg7

In this tutorial, I explain how we can use some dot products and vector math to implement the separating axis theorem (https://en.wikipedia.org/wiki/Hyperplane_separation_theorem). The separating axis theorem is a popular introductory game physics technique for detecting collisions. Although it is not the most efficient (check out GJK algorithm for a more efficient algorithm https://en.wikipedia.org/wiki/Gilbert%E2%80%93Johnson%E2%80%93Keerthi_distance_algorithm), it gets the job done and is easy to intuitively understand. Once we look at how to solve this problem mathematically, we implement it in the code base, and create a function for detecting whether an AABB is colliding with another AABB, or with a Box2D (OBB).

Source Code: https://github.com/codingminecraft/MarioYoutube/tree/265780291acc7693816ff2723c227ae89a171466

0:00 Intro
1:03 SAT Math
10:35 Coding the SAT

---------------------------------------------------------------------
Website: https://ambrosiogabe.github.io/
Github: https://github.com/ambrosiogabe

Here are some books I recommend if you want to learn about game engine development more thoroughly. I do not profit off any of these sales, these are just some books that have helped me out :)

My Recommended Game Engine Books:
Game Engine Architecture: https://www.gameenginebook.com/
Game Physics Cookbook (Read this before the next physics book): https://www.amazon.com/Game-Physics-Cookbook-Gabor-Szauer/dp/1787123669
Game Physics (Ian Millington): https://www.amazon.com/Game-Physics-Engine-Development-Commercial-Grade/dp/0123819768
Game Programming Patterns (Free): https://gameprogrammingpatterns.com/

My Recommended Beginning Game Programming Books:
JavaScript Game Design: https://www.apress.com/gp/book/9781430247166

My Recommended Java Books:
Data Structures/Algorithms: https://www.amazon.com/Data-Structures-Algorithms-Java-6th-ebook/dp/B00JDRQF8C
LWJGL (Free, but I haven't read this thoroughly): https://lwjglgamedev.gitbooks.io/3d-game-development-with-lwjgl/content/

Outro Music: https://www.bensound.com/royalty-free-music




Other Videos By GamesWithGabe


2020-09-02How to Debug OpenGL Programs? (Non-zero exit code status, uh oh) | Game Engine Concepts #2
2020-08-30Engine Workflow & Picking | Cocoa Engine Devlog #12
2020-08-29Adding a Game Viewport | Coding a 2D Game Engine in Java #29
2020-08-26How does Font Rendering Work? | Game Engine Concepts #1
2020-08-22Particle Physics and Forces | Coding a 2D Physics Engine in Java #13
2020-08-19Channel Update | GamesWithGabe
2020-08-14ImGui Docking in Java LWJGL | Coding a 2D Game Engine in Java #28
2020-08-12Force Generators (Abstracting Forces) | Coding a 2D Physics Engine in Java #12
2020-08-02Gizmos and Asset Management | Cocoa Engine Devlog #11
2020-07-31Framebuffers in OpenGL | Coding a 2D Game Engine in Java #27
2020-07-28Separating Axis Theorem EXPLAINED | Coding a 2D Physics Engine in Java #11
2020-07-24Debug Drawing Boxes and Circles | Coding a 2D Game Engine in Java #26
2020-07-23Why C++ Scares the Crap Out of Me
2020-07-22Circle vs Shape Collision Detection | Coding a 2D Physics Engine in Java #10
2020-07-20Box2D and Serialization ENGINE PROGRESS | Cocoa Engine Devlog #10
2020-07-17How to Raycast Against a Box (OBB) | Coding a 2D Physics Engine in Java #9
2020-07-14How to Raycast Against a Circle | Coding a 2D Physics Engine in Java #8
2020-07-10Line vs Box2D AKA Raycasting | Coding a 2D Physics Engine in Java #7
2020-07-08Unit tests and Line vs Circle | Coding a 2D Physics Engine in Java #6
2020-07-06Rotating Points in 2D Space | Coding a 2D Physics Engine in Java #5
2020-07-03Point vs. Primitives | Coding a 2D Physics Engine in Java #4



Tags:
gameswithgabe
games with gabe
lwjgl3
how to code physics in lwjgl
coding a physics engine
separating axis theorem
collision detection
polygon collision detection
how to code a physics engine
how to code separating axis theorem
how to code box collision detection
box and box collision detection
sat algorithm
separating axis theorem coded
box collisions
how to
how to code a collision detector
intersection detection
physics engine
2d game physics
lwjgl
java
mario