在Stack Overflow社区的帮助下,我写了一个非常基本的但有趣的物理模拟器。 你点击并拖动鼠标来启动一个球。 它会弹跳,最终停在“地板”上。 我想添加的下一个重要特征是球碰撞。 球的运动被分解成斧和速度vector。 我有重力(y向量的每个步骤的小的减less),我有摩擦(两个向量与墙的每次碰撞的小的减less)。 这些球以一种令人惊讶的现实方式诚实地移动。 我想我的问题有两个部分: 检测球对球碰撞的最佳方法是什么? 我只是有一个O(n ^ 2)循环遍历每个球,并检查其他每一个球,看看它是否半径重叠? 我用什么方程来处理球碰撞? 物理101 它如何影响两个球速度x / y向量? 这两个球头的方向是什么? 我如何将这个应用到每个球? 处理“墙壁”的碰撞检测和由此产生的vector变化很容易,但是我发现球球碰撞更复杂。 有了墙壁,我只需要取对应的x或yvector的负值,然后按照正确的方向。 用球我不认为这是这样的。 一些快速的澄清:为了简单起见,我现在可以完美的弹性碰撞了,现在我所有的球都有相同的质量,但是我可能会在将来改变这一点。 编辑:我发现有用的资源 2d球物理学与向量: 二维碰撞没有Trigonometry.pdf 二维球碰撞检测示例: 添加碰撞检测 成功! 我有球碰撞检测和响应工作伟大! 相关代码: 碰撞检测: for (int i = 0; i < ballCount; i++) { for (int j = i + 1; j < ballCount; j++) { […]
如何判断一个圆和一个矩形在二维欧氏空间中是否相交? (即经典的2D几何)
如何检测两个<div>元素是否碰撞? 两个div是简单的彩盒,相互垂直,所以没有复杂的形状或angular度。
我正尝试在多边形algorithm中创build一个快速的 2D点,用于命中testing(例如Polygon.contains(p:Point) )。 有效的技术build议,将不胜感激。
我有一条从A到B的圆和一个位于C的半径为R的圆。 什么是一个好的算法来检查线条是否与圆相交? 沿着圆周边缘的哪个坐标发生?