[英]How to calculate reflection angle of a ball colliding with a wall
我有一個球,並且正朝着這樣的角度移動它:
ball.x += ball.speed * Math.sin(ball.angle)
ball.y += ball.speed * -Math.cos(ball.angle)
球與牆碰撞時如何計算反射角?(水平或垂直)
像這樣
對於具有法向矢量e_n
的任何牆,具有初始速度矢量v_i
的球在反射后具有以下速度矢量v_f
v_f = v_i - 2 dot( v_i, e_n) e_n
,
其中dot
是矢量點積。
說明: v_i
在e_n
上的投影為dot( v_i, e_n )
。 這是朝向牆壁的速度,這是反射時反轉的部分。 分量p = dot( v_i, e_n )
得出向量p e_n
。 剩余分量可以通過叉積或簡單地通過v_s = v_i - p e_n
。 最終速度是v_s - p e_n = v_i - 2 p e_n = v_i - 2 dot( v_i, e_n) e_n
分量加上反向投影分量,即v_s - p e_n = v_i - 2 p e_n = v_i - 2 dot( v_i, e_n) e_n
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.