我试图让用户绘制一个桨,他们就可以使用投中一球。 不过,我似乎无法得到,因为球的速度的x和y分量不与墙壁一字排开球正确反弹。 我怎样才能解决这个问题?
我试图通过加雷思·里斯提出的意见在这里 ,但显然我不知道有足够的了解向量能够遵循它。 例如,我不知道你在矢量存储到底是什么 - 我知道这是有方向的值,但是你存储2点这之间,坡度,角度?
我真正需要的球击中,去寻找新的x和y的速度之后给出壁和X和Y速度的角度。
我试图让用户绘制一个桨,他们就可以使用投中一球。 不过,我似乎无法得到,因为球的速度的x和y分量不与墙壁一字排开球正确反弹。 我怎样才能解决这个问题?
我试图通过加雷思·里斯提出的意见在这里 ,但显然我不知道有足够的了解向量能够遵循它。 例如,我不知道你在矢量存储到底是什么 - 我知道这是有方向的值,但是你存储2点这之间,坡度,角度?
我真正需要的球击中,去寻找新的x和y的速度之后给出壁和X和Y速度的角度。
加雷思·雷斯得到了公式是正确的,但我发现的照片和说明这里更加清楚一点。 即,基本公式为:
Vnew = -2*(V dot N)*N + V
where
V = Incoming Velocity Vector
N = The Normal Vector of the wall
既然你不熟悉的矢量符号,这里就是你需要知道这个公式是什么:矢量基本上只是X,Y对,所以V = (vx, vy)
和N = (nx, ny)
平面最好由垂直于该平面所描述的,即单位长度的矢量垂直于所述平面。 然后几个通式中, b*V = (b*vx, b*vy)
; V dot N = vx*n.x+vy*ny
,也就是说,它是一个标量; 并且A + B = (a.x+bx, a.y+by)
最后,为了找到基于任意矢量的单位矢量,它是N = M/sqrt(M dot M)
如果表面是弯曲的,使用普通的在接触点。