math - 数学/物理负责人的最近方法问题

标签 math physics

我正在使用 Segment to Segment 最接近方法,该方法将输出两个长度段之间的最近距离。每个段对应一个球体对象的起点和终点。速度只是从一个点到另一个点。

即使没有真正的碰撞,最近的方法也可以成功。因此,我目前正在使用 10 步法并计算两个球体沿两个线段移动时的距离。所以,基本上每段的长度就是物体在物理步骤中的遍历,半径就是物体的半径。通过步进,我可以知道它们在哪里发生碰撞,以及它们是否发生碰撞(对于大多数部分来说,排序)。

我觉得可能会有更好的东西。虽然我有点相信第一个最接近的方法调用是必需的,但我认为紧随其后的方法是 TAD 弱点。谁能帮我吗?如果需要,我可以说明这一点。

非常感谢!
alt text
(来源:yfrog.com)

最佳答案

(我不知道如何发布图形;请耐心等待。)

好的,我们有两个半径为 r1 和 r2 的球体,从位置 X1 和 X2 开始,以速度 V1 和 V2(X 和 V 是矢量)移动。

从球体 2 看球体 1 的速度为

V = V1-V2

它的方向是
v = V/|V|

球体 1 必须行进(在球体 2 的框架中)到最近的方法的距离是
s = Xv

如果 X 是初始间隔,则最近接近的距离为
h = |X - Xv|

这是图形可以提供帮助的地方。如果 h > r1+r2,则不会发生碰撞。假设 h < r1+r2。碰撞时,两个球心和最接近的点会形成一个直角三角形。从球体 1 的中心到最近点的距离是
u = sqrt((r1 + r2)^2 - h^2)

所以球体 1 走过的距离是
s - u

现在看看球体 1 是否在给定的间隔内行进那么远。如果是这样,那么您就知道球体的确切时间和位置(您必须从球体 2 的框架移回,但这很容易)。如果没有,就没有碰撞。

关于math - 数学/物理负责人的最近方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2568914/

相关文章:

algorithm - 计算成对和的乘积 mod 10^9+7 的替代方法比 O(N^2) 快

c# - 如何生成钟形曲线(高斯函数)

php - 寻找优秀、可靠玩家的算法

math - 对推力从当前速度矢量到目标矢量的平滑变化进行编程

java - 和引擎更新

algorithm - 重复 : T(n/4) + T(n/2) + n^2 with tree methods

python 矩阵线性微分方程

Python:在 double_scalars 中捕获运行时溢出

ios - 用花栗鼠物理学创建一个圆,但半径太大?

lua - 宇宙飞船的二维轨迹规划与物理