Javascript 如何计算球与墙碰撞的反射角
我有一个球,我把它移向一个像这样的角度:Javascript 如何计算球与墙碰撞的反射角,javascript,math,game-physics,Javascript,Math,Game Physics,我有一个球,我把它移向一个像这样的角度: ball.x += ball.speed * Math.sin(ball.angle) ball.y += ball.speed * -Math.cos(ball.angle) 当球与墙碰撞时,如何计算反射角?(水平或垂直) 类似于对于任何具有法向量的墙e\u n具有初始速度向量v\u i的球在反射后具有速度向量v\u f v_f=v_i-2点(v_i,e_n)e_n 其中,dot是矢量点积 说明: v_i在e_n上的投影是dot(v_i,e_n)。这
ball.x += ball.speed * Math.sin(ball.angle)
ball.y += ball.speed * -Math.cos(ball.angle)
当球与墙碰撞时,如何计算反射角?(水平或垂直)
类似于对于任何具有法向量的墙
e\u n
具有初始速度向量v\u i
的球在反射后具有速度向量v\u f
v_f=v_i-2点(v_i,e_n)e_n
其中,dot
是矢量点积
说明:
v_i
在e_n
上的投影是dot(v_i,e_n)
。这是朝向墙壁的速度,这是反射后会反转的部分。分量p=dot(v_i,e_n)
产生一个向量pe_n
。剩余的分量可以通过叉积或简单的v_s=v_i-p e_n
计算。最终速度是未改变的分量加上反向投影分量,即v_s-pe_n=v_i-2pe_n=v_i-2dot(v_i,e_n)e_n
135
非180
。。。i、 在这种情况下,它是(180-45)<代码>180*(Math.PI/180)-球角度代码>请参见,这是假设一个不旋转的球。实际上,倾斜角度的摩擦和反射也会导致旋转的变化(这会改变内能的分布,影响速度等),因此池台上的边缘放置在适当的高度,以便旋转也能正确反映。