我不擅长数学,到目前为止我能找到一切,但不是这一个。 我只是想不通。我想我只是没有看到它。 我计算方向,两个圆相撞,一个有传入方向, 并且需要获得一个外向的方向。
到目前为止,我知道如何获得碰撞点,我可以计算传入/传出角度α。 (Calculating the angle between two lines without having to calculate the slope? (Java))
我坚持构造出局线并检索m或a(y = ax + b)。
所以,从图片中,我知道y,我,alfa和所有线相交的点(没有标记,抱歉)。
有人可以帮帮我吗?我用Java编程。
答案 0 :(得分:1)
如果在与水平边界碰撞期间保留动量,则碰撞将仅翻转m的符号。也就是说,之后的m值是之前m值的-1倍。
假设原始线的方程是y = mx + c,并且碰撞后的线的方程是y = -mx + b。在交叉点,x和y值相同。
为了避免以后混淆,我们将调用碰撞点(X,Y)的x和y值而不是(x,y)
在交叉点处,两条线的线方程都成立(对于x = X,y = Y)。所以,
Y = mX+c = -mX+b.
=> mX+c+mX = b (adding mX to both sides)
=> 2mX+c = b (collecting the terms in m)
因此第二行(在你的问题中称为“m或a”)的截距是2mX + c,其中X是发生碰撞的x位置。因此,第二行的等式是:
y = -mx + (2mX + c)