Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Sfml, C++. Porusanie jednostką względem kątu

Ostatnio zmodyfikowano 2015-04-12 16:45
Autor Wiadomość
Szymon1177
Temat założony przez niniejszego użytkownika
Sfml, C++. Porusanie jednostką względem kątu
» 2015-04-12 14:10:23
Witam, mam mały problem z obliczeniem ruchu jednostki pod danym kątem. Na początku pobieram rotacje tzn kąt. postać jest skierowana w góre równo z osią y i to jej punkt 0. Załóżmy, że mamy sytuacje iż nasza jednostka obraca się pod kątem 45(zgodnie ze wskazowkami zegara czyli w prawo). Kąt 45 przeliczamy na radiany. 45*3.14/180= 0.785 rad i w sumie nie wiem co zrobić dalej ponieważ muszę to podać w innych jednostkach. Cały kod który znalazłęm w necie wygląda tak:

float rotacja = sprite.getRotation();
float vx = sin(( rotacja * M_PI ) / 180.0f );
float vy = -cos(( rotacja * M_PI ) / 180.0f );
sprite.move (speed*vx,speed*vy);

Wiem, że sin jest związany z osią x, a cos z y a jest ujemny ponieważ w programowaniu oś y zwiększa wartość w dół. Ale moje pytanie brzmi: Dlaczego sin odnosi wlasnie sie do x a cos do y? wiem ze sin=przypostokatna na przeciw kata a/przeciwprostokatna ale nie wiem co dalej z tego wywnioskowac. Zresszta sin(rad) wiec nie wiem jak sie do tego w ogole odniesc. I dlaczego w poruszaniu jest szybkość * sin załózmy a nie + czy / :) Liczę na dobrą odpowiedź :) Z góry dzięki :)

http://postimg.org/image/9ntzplbcv/
P-130646
pekfos
» 2015-04-12 14:26:28
Dlaczego sin odnosi wlasnie sie do x a cos do y?
Odwrotnie. A odpowiedź masz w definicjach tych funkcji.

I dlaczego w poruszaniu jest szybkość * sin załózmy a nie + czy /
Ponownie, definicje.. Wartości tych funkcji to stosunek długości przyprostokątnych do przeciwprostokątnej (prędkości). Mnożysz sin/cos przez prędkość, by otrzymać przesunięcia wzdłuż osi współrzędnych.
P-130647
Brunon3
» 2015-04-12 16:45:59
Tak na przyszłość; kod dawaj w znaczniki [cpp] kod [/cpp], a linki w znacznik [a href="link"]. ;)

-BD.
P-130657
« 1 »
  Strona 1 z 1