首页 > 解决方案 > 如何反弹一个点以击中某个角度的线

问题描述

我有一条线和一个点,线有一个角度,{ angle }点有一个速度{ x, y },点移动到这条线并击中它。在这一点上,我想改变点的速度,就好像点相对于线的角度从线反弹一样。如何根据线角计算点的新速度?

标签: javascriptmathgame-physics

解决方案


没有“重力”?完美的弹性?

a = angle
b = atan(y/x)  -- angle of 'velocity'
c = 2a-b       -- angle of new velocity
r = sqrt(x*x + y*y)  --  scaling of x,y
v = r * cos(c)
w = r * sin(c)
new velocity = {v, w}

(警告:我不知道什么a是相对的 - 垂直或水平,也不知道哪个方向。可能还有其他问题。)


推荐阅读