Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何计算球与墙碰撞的反射角_Javascript_Math_Game Physics - Fatal编程技术网

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)-球角度请参见,这是假设一个不旋转的球。实际上,倾斜角度的摩擦和反射也会导致旋转的变化(这会改变内能的分布,影响速度等),因此池台上的边缘放置在适当的高度,以便旋转也能正确反映。