将剩余距离推到碰撞平面?

时间:2012-06-25 19:30:34

标签: java math collision-detection trigonometry

好吧,所以我有这个碰撞检测代码,我试图在墙的平面上推动剩余距离(从0移动到+5,墙在+2,剩余= +3)。像这样: enter image description here

现在我把它的大部分都放下了,我知道我需要距离移动的剩余距离,以及墙壁法线的交叉积,但我需要一些帮助才能使论坛正确。

我的问题是,什么是沿着墙壁移动剩余距离的正确论坛?

if(distRemaining.length() > 0){
            cProduct = cross(distRemaining, wallNormal);
            dest += new Vector3f(cProduct.x, 0, cProduct.z);
        }

1 个答案:

答案 0 :(得分:2)

将您的起点A和影响点B以及法线向量N调用到您的墙上飞机。计算将A到B(AB)的向量,并计算它与N之间的向量积。叫这个X

    X = AB x N

这是一个垂直于NAB的向量,它也位于墙的平面上。将另一个向量Y作为XN

之间的向量积
    Y = X x N

现在,这是你墙上的另一个向量,它指向碰撞后墙上的粒子运动方向。您需要对此向量进行标准化Y(计算Y / |Y|)并将其乘以您想要沿墙移动的数量,然后将其添加到碰撞点B。这个向量可能指向相反的方向,但是如果你对使用向量产品的顺序要小心,你应该没问题。

这就是你如何在3D中做到这一点,我假设你想从你的问题。在2D中它会相当简单。