我正在尝试制作一个弹球对象的弹球机游戏。
我正在尝试为我的弹球制作物理,主要问题是我将如何处理弹跳碰撞。 现在我已经看过很多做-x或-y,但这不是我想要的。 我有2个值xspeed和yspeed都代表他们方向的速度。 我也有2个点,可以是任意方向的dianogal或旋转。 现在我需要计算在与2点之间的线碰撞时球的速度,但我不知道如何以数学方式进行。
(这是我对象的难看的表现) http://i.stack.imgur.com/aHoml.png
点a + b是我的2个线点,点c是碰撞点。
任何帮助都将不胜感激。
编辑:
当前代码:
Top是我的第一个点,Right是我的第二个点。
sf::Vector2f n(-(top.y - right.y),(top.x - right.x));
sf::Vector2f dotv = sf::Vector2f(ball.getSpeed().x * n.x, ball.getSpeed().y * n.y);
sf::Vector2f dotn = sf::Vector2f(n.x*n.x,n.y*n.y);
sf::Vector2f u = sf::Vector2f(dotv.x/dotn.x,dotv.y/dotn.y);
u = sf::Vector2f(u.x*n.x,u.y*n.y);
sf::Vector2f w = ball.getSpeed() - u;
ball.setSpeed(sf::Vector2f((sf::Vector2f(w.x*0.5,w.y*0.5)-u)));