我正在使用Segment to Segment最接近的方法,它将输出两段长度之间的最近距离。每个段对应于球体对象的起点和终点。速度只是从一个点到另一个点。
即使没有真正的碰撞,最近的方法也能成功。所以,我现在正在使用一个10步法,计算2个球体沿两个部分移动时的距离。因此,基本上每个段的长度是物理步骤中对象的遍历,半径是对象半径。通过踩踏,我可以知道它们碰撞的位置,以及它们是否发生碰撞(排序;对于MOST部分。)..
我觉得可能有更好的东西。虽然我有点认为需要第一个最近的接近调用,但我认为紧随其后的方法是TAD弱点。谁能帮我吗?如果需要,我可以说明这一点。
非常感谢! alt text http://img444.yfrog.com/img444/6692/caquestion.png
答案 0 :(得分:3)
如果位置函数是可逆的和明确的,则可以在不模拟时间的情况下完成最近的方法。
这不适用于所有路径(例如某些立方体),但应适用于线性路径。
答案 1 :(得分:3)
(我不知道如何发布图片;请耐心等待。)
好吧,我们有两个半径为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的框架向后移动,但这很容易)。如果没有,就没有碰撞。