kąt odbicia

0

Witam, mam dosc głupi problem, otóż piszę ponga, i nie wiem, jak obliczyć kąt odbicia piłeczki.
mój kod:

  constexpr float M_PI =  3.14159265;
   const float ballSpeed = 10.0f;
    float ballAngle = 180.0*M_PI/180.0; // z stopni na radiany
// inna czesc kodu:

float ball = ballAngle*180/M_PI; // - z radianów na stopnie
float newBallAngle = ????

Wizualizacja oco mi chodzi:
http://brasil.cel.agh.edu.pl/~12utkocerba/optyka/acces/pictures/obrazek_7_2.gif
Nie wiem jak napisać algorytm do tego..

0
newBallAngle = M_PI-ballAngle;

Nie rób tego na kątach, zrób to na wektorach.

0

Mogę prosić jakiś działający przykład z użyciem wektorów? ew. jakiś tutorial? Google nie daje zbyt wiele wyników

1

Przede wszystkim jeśli zakładasz, że ściany będą zawsze zgodne z osiami układu współrzędnych, to możesz po prostu negować składową wektora prędkości (x/y) w zależności od kolizji ze ścianami lub sufitem/podłogą.
Jeśli jednak chciałbyś zdefiniować planszę, w której ściany mogą znajdować się pod dowolnym kątem, to wyznaczaj wypadkowy wektor prędkości (w) z takiego wzoru:
w = k - u, gdzie
k = v - u,
u = (v o n / n o n)n,
v - wektor prędkości podczas kolizji,
k - składowa wektora v, równoległa do płaszczyzny, z którą następuje kolizja,
u - składowa wektora v, prostopadła do płaszczyzny, z którą następuje kolizja,
o - iloczyn skalarny.
To wszystko oczywiście dotyczy zderzenia doskonale sprężystego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1