Wyliczenie wektorów X i Y z kąta i prędkości

0

Witam, piszę prosta gre 2D. Teraz probuje napisac funkcje dla klasy pocisku ktora w zaleznosci od podanego katu i predkosci wyliczy wektory X i Y ruchu.
Na razie kod odpowiedzialny za te wektory wyglada tak (w Javie):

speedX = Math.sin(Math.toRadians(angle)) * speed;
speedY = Math.cos(Math.toRadians(angle)) * speed;

Niestety, działa tylko dla I i III ćwiartki układu wspołrzednych, czyli dla wartosci kąta od 0 do 90 i od 180 do 270 (wyłącznie). Dla pozostałych daje dziwne wartosci w formule naukowej (np. 6.1999999997E-16).
Jak w takim razie wyliczyc te wektory?

P.S.
Co ciekawe, gdy liczę sobie te wartości na kalkulatorze w Windowsie to wszystko wychodzi poprawnie. Wyglada na to, że zle uzywam funkcji Javy..

0

Co ciekawe, napisałem programik

double speed = 10.0;
for(int angle=0;angle<=180;angle+=10)
{
      double speedX = Math.sin(Math.toRadians(angle)) * speed;
      double speedY = Math.cos(Math.toRadians(angle)) * speed;
      System.out.println("angle = "+angle+" speedX = "+speedX+" speedY = "+speedY); 			
}

i dostałem poprawne wyniki dla pierwszej i drugiej ćwiartki.
Nie wiem czy wiesz, że funkcje sin i cos dają wartości przybliżone, cos(90o) nie będzie równy zero, będzie bardzo bliski zera, np. 6.123233995736766E-16.

0

Poza tym wartość zwracana przez toRadians też nie musi być dokładnie taka jak trzeba :D Zawsze jakieś śmieci po przecinku mogą pozostać.

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