Autor Wątek: Ruch po okręgu  (Przeczytany 2586 razy)

Offline kodzik

  • Użytkownik

# Listopad 14, 2011, 19:51:17
Witam.

Mam problem ze zrozumieniem i stworzeniem ruchu po okręgu.
Mam obiekt, który załóżmy jest oddalony o 10 względem punktu S = (0,0) i chcę by po naciśnięciu Q i E obiekt przesuwał się w odpowiednio w lewo i prawo po okręgu (względem pkt S) ze stałą prędkością v = 5.
Obrazek mniej więcej przedstawia o co mi chodzi:


Mam jedynie problem z zaimplementowaniem tego, nie wiem nawet czego szukać, a "ruch po okręgu w układzie kartezjańskim" nie wiele mi pomaga. Co muszę mieć by policzyć następne współrzędne X,Y by wszystko było w odpowiednim miejscu? Teoretycznie dowiedziałem się, że muszę mieć czas.. ale jaki to czas? Delta? Czy może lepiej będzie skracać odpowiednio boki prostokąta i liczyć długość przekątnej? Chciałbym zrobić to tak jak powinno być zrobione, jeżeli są od tego wzory. To pomoże mi zrozumieć pewne rzeczy.

Pozdrawiam.     

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline rm-f

  • Użytkownik
    • Tu trolluje

# Listopad 14, 2011, 19:54:28
Trygonometria.

Offline Ciunkos

  • Użytkownik
    • Black Sheep

# Listopad 14, 2011, 20:03:02
Są takie fajne wzorki:
Cytuj
x = r * cos(alfa)
y = r * sin(alfa)
Jeśli chcesz obracać z pewną stałą prędkością liniową to musisz wyliczyć prędkość kątową ze wzoru omega = v / r. Omega wyrażona jest jako ilość radianów na sekundę. Teraz po prostu do alfa dodajesz omega * dt i się kręci.
« Ostatnia zmiana: Listopad 14, 2011, 20:05:39 wysłana przez Ciunkos »

Offline kodzik

  • Użytkownik

# Listopad 14, 2011, 20:42:23
Te wzory już znalazłem, lecz nie wiem co kryje się pod alfą? :)

Offline Gecio

  • Użytkownik

# Listopad 14, 2011, 20:43:58
Kąt zakreślany przez obiekt... Pomyśl trochę ;p

Offline kodzik

  • Użytkownik

# Listopad 14, 2011, 21:11:01
Pogubiłem się... Nie wiem co jest co, alfa jest stałą? Omegę konwertować na stopnie?
Pozdrawiam.

Offline Ciunkos

  • Użytkownik
    • Black Sheep

# Listopad 14, 2011, 21:19:06
Alfa to kąt w radianach - zmienny bo w końcu chcesz obracać tym czymś. PI radianów to 180 stopni. Alfa to jest ten kąt, np 1.57 to kąt około 90 stopni. Możesz sobie to konwertować na stopnie i w drugą stronę lecz pamiętaj że sin i cos oczekują radianów. Omega jest stała dla stałej prędkości liniowej. Poszukaj sobie o prędkości liniowej i kątowej to powinno Ci się wyjaśnić.

Offline kultys

  • Użytkownik
    • Tekno Bowling Master

# Listopad 14, 2011, 22:39:44

Offline kodzik

  • Użytkownik

# Listopad 14, 2011, 23:42:27
Dzięki, już prawie wszystko działa, lecz gdy obracam kamerą w jedną stronę, następnie zacznę nią kręcić w drugą, obrót nie jest już płynny, przeskakuje o kilka jednostek. Dzieje się to, ponieważ ruch przeskakuje z sin na cos i odwrotnie. Co zrobić, aby ta zmiana była płynna?


Offline Timati

  • Użytkownik

# Listopad 15, 2011, 01:53:32
Interpolacja.

Offline vinc999

  • Użytkownik

# Listopad 15, 2011, 09:24:07
Tam nic nie przeskakuje z sin na cos. Wiec albo czegos nie rozumiesz, albo zle sie wyraziles.

Offline kultys

  • Użytkownik
    • Tekno Bowling Master

# Listopad 15, 2011, 15:10:19
O ile widziałeś mój kod to są tam takie dwie reguły:
 Anglex -= 0.1F * DeltaTime
 Angley += 0.1F * DeltaTime

Jeżeli chcesz żeby ruch odbył się w drugą stronę to zmieniasz na:

 Anglex += 0.1F * DeltaTime
 Angley - = 0.1F * DeltaTime

Mnie tam się nic nie tnie.

Offline kodzik

  • Użytkownik

# Listopad 15, 2011, 17:58:08
Bardzo Wam dziękuję.