3D collision DETECTION concepts: old school: brute-force ---> O(n^2) complexity! Raycasting (used in DOOM) introduction: http://permadi.com/1996/05/ray-casting-tutorial-1/ http://threejs.org/docs/#Reference/Core/Raycaster http://spirare.js.org/app/examples/basic-collision-detection/index.html code: http://spirare.js.org/app/examples/basic-collision-detection/js/main.js http://webmaestro.fr/collisions-detection-three-js-raycasting/ http://oos.moxiecode.com/js_webgl/ray_collision/index.html modern: 1) broadphase methods: sweep and prune naive (brute-force) incremental octree (3D) https://www.youtube.com/watch?v=S-SnhregzOI https://en.wikipedia.org/wiki/Octree http://www.gamedev.net/page/resources/_/technical/game-programming/introduction-to-octrees-r3529 https://en.wikipedia.org/wiki/Quadtree (2D) uniform grid http://gamedev.stackexchange.com/questions/72030/using-uniform-grids-for-collision-detection-efficient-way-to-keep-track-of-wha k-d-tree https://www.youtube.com/watch?v=HCdHG_J477A https://www.youtube.com/watch?v=T9h2KKJ_Pl8 https://en.wikipedia.org/wiki/K-d_tree sphere-tree https://www.cs.tcd.ie/publications/tech-reports/reports.99/TCD-CS-1999-10.pdf https://www.youtube.com/watch?v=UNdHaahy8P0 ... 2) midphase (more precise form of broadphase) ... 3) narrowphase 3a) AABB (axis-aligned bounding boxes) https://developer.mozilla.org/en-US/docs/Games/Techniques/2D_collision_detection https://hacks.mozilla.org/2015/10/html-5-games-3d-collision-detection/ https://developer.mozilla.org/en-US/docs/Games/Techniques/3D_collision_detection https://developer.mozilla.org/en-US/docs/Games/Techniques/3D_collision_detection/Bounding_volume_collision_detection_with_THREE.js http://threejs.org/docs/#Reference/Math/Box3 http://threejs.org/docs/#Reference/Extras.Helpers/BoundingBoxHelper https://www.script-tutorials.com/webgl-with-three-js-lesson-3/ https://github.com/jwill/net-magazine-three-js https://www.youtube.com/watch?v=8b_reDI7iPM https://www.youtube.com/watch?v=Iu6nAXFm2Wo https://www.youtube.com/watch?v=NUJeuNwbqs8 (AABB and Bounding-Sphere) 3b) OBB (oriented bounding box): https://en.wikipedia.org/wiki/Minimum_bounding_box SAT (Separating Axis Theorem) "used to check for collisions between two simple polygons, http://www.jkh.me/files/tutorials/Separating%20Axis%20Theorem%20for%20Oriented%20Bounding%20Boxes.pdf http://gamedev.stackexchange.com/questions/25397/obb-vs-obb-collision-detection https://github.com/Mugen87/yume/blob/master/src/javascript/engine/etc/OBB.js or between a polygon and a circle": http://www.wildbunny.co.uk/blog/2011/04/20/collision-detection-for-dummies/ 3c) Bounding Spheres -------------------------------- challenges: 1) mini game based on AABB collision detection 2) mini game based on Sweep and Prune with AABB collision detection -------------------------------- various info: broadphase method selection: http://stackoverflow.com/questions/1616448/broad-phase-collision-detection-methods http://www.gamasutra.com/view/feature/131598/advanced_collision_detection_.php?print=1 modern collision RESPONSE: [todo] -------------------------------- http://www.bulletphysics.org/mediawiki-1.5.8/index.php?title=Broadphase http://buildnewgames.com/broad-phase-collision-detection/ https://www.youtube.com/watch?v=0ZiFzkp8ZNM template: http://jsfiddle.net/95t964o0/ platform game: http://www.webspaceinvader.com/platform/ http://www.webdesignermag.co.uk/build-a-3d-platform-game-with-three-js-pt-2/ data visualization: http://makc.github.io/three.js/map2globe/demo.html Physics engine: WebGL based physics engines: Bullet -> Ammo.js -> Ammo.lab https://github.com/kripken/ammo.js/ https://github.com/lo-th/Ammo.lab demo: http://lo-th.github.io/Ammo.lab/#basic https://gildas-lormeau.github.io/zip.js/ Cannon.js GooJS Oimo PhysicsJS ...