math - 两个快速移动的圆圈之间的碰撞解决方案。一种对碰撞没有反应的
问题描述
好的,所以我已经深入了解并了解如何在快速移动的圆圈和基于基本曲线/线条的形状之间进行碰撞。我还没有完全集中精力检测两个移动圆圈之间的碰撞。我一直将它们建模为胶囊,因此虽然我可以轻松找到它们的交点,但我不确定如何解决一个停止和另一个开始的位置。
此外,一旦我知道这些信息,我真的不知道如何解决他们的速度和位置。
情况是有几百个小圆圈,按照物理定律快速移动。当鼠标/手指/触摸移动并继承手指速度等时,还有更大的圆圈跟随鼠标/手指/触摸的位置。目标是小圆圈与较大的圆圈相撞。这很棘手,因为大圆圈根本不会对碰撞做出反应,而且我能找到的大多数算法都需要这样做。
我什至如何开始思考和解决这种类型的碰撞场景?我不仅无法弄清楚快速移动的小圆圈与快速移动的大圆圈在哪里碰撞,我不知道如何考虑手指速度以正确碰撞小圆圈。
有什么好主意吗?
解决方案
设x1
, y1
, vx1
,vy1
为 的 x 位置、y 位置、x 速度和 y 速度circle1
。同样,我们有x2
, y2
, vx2
,vy2
对于circle2
。
由于其中一个圆,比如说circle1
,对碰撞没有反应,所以从这个大家伙的角度(也称为参考系)来看碰撞是很有用的。在这个参考系中,circle2
x 速度为vx2 - vx1
,y 速度为vy2 - vy1
。的 x 和 y 位置circle2
同样是x2 - x1
和y2 - y1
。
在这个参考系中,circle1
也没有移动,可以被视为静态墙。
然后,您可以将此问题视为类似于以的法向量和 的速度与circle2
墙壁碰撞的移动问题。(x2-x1 , y2-y1)
(vx2-vx1 , vy2-vy1)
我假设您知道如何解决这个问题,因为您说您了解圆形和形状之间的碰撞。
一旦你得到 的最终速度,只需记住通过添加x 速度和y 速度circle2
返回到原始视角。vx1
vy1
推荐阅读
- spotfire - spotfire - 有没有办法创建堆叠瀑布图?
- mysql - MySQL 查找和替换但保留部分替换
- android - TextView 值在过去 N 秒内发生了变化
- python-3.x - python方法参数识别逗号(不传递参数)
- ios - 在 Heroku 上使用推送通知
- angular - canActivateChild 被多次调用
- android - AsyncListUtil 和数据分页库之间的区别?
- c# - 在 UWP 后台任务中实例化 UI 线程
- mysql - MariaDB 捷克语字符
- spring - spring-boot 是否支持任何动态 OLAP 报告生成工具?