Prędkość ruchu ciała po okręgu

0

Witam,

Mam problem z wyznaczeniem prędkości ruchu ciała po okręgu. Wywołuję co ustalony czas funkcję rysującą na canvasie, a współrzędne obiektu, wyznaczam tak:

var start_x = x + radius_x * Math.cos(katToRadians(degr));
var start_y = y + radius_y * Math.sin(katToRadians(degr));

degr - kąt od 0-360 stopni zamieniany na radiany przy użyciu funkcji katToRadians.

Wszystko działa jak należy, znaczy obiekt porusza się ruchem jednostajnym po okręgu. Nie wiem natomiast, jak teraz zmienić jego prędkość. Sprawdzałem wzory na prędkość kątową, ale nie potrafię tego wprowadzić do kodu. Wszystkie próby kończą się tym, że obiekt porusza się szybciej/wolniej, ale zmieniany jest kąt obrotu (wykonywana jest połowa ruchu lub inna jego część).

Będę wdzięczny za wskazówkę.

2

prędkość kątową trzymaj w radianach na sekundę (albo stopniach na sekundę), w zasadzie nie musisz nic przeliczać...

0

No tak, tyle też wyczytałem. Problem tylko w tym, że nie wiem gdzie to podstawić :/ Pisząc coś takiego:

var start_x = x + radius_x * Math.cos(katToRadians(degr)*predkosc);
var start_y = y + radius_y * Math.sin(katToRadians(degr)*predkosc);

Gdzie predkosc, to wartość postaci:
var predkosc = katToRadians(360)/5;

Prędkość rzeczywiście się zmienia, tyle że po wykonaniu obrotu (mniej niż jednego, lub więcej w zależności od prędkości), obiekt się "resetuje" i wraca na pozycję początkową. Później wszystko zaczyna się od nowa.

0
  1. katToRadians(360) to po prostu 2*pi
  2. jeżeli predkosc = 2pi/n to degr powinno się zmieniać od 0 do n*180/pi
1

var start_x = x + radius_x * Math.cos(Math.PI*(predkosc*degr/180));
gdy predkosc to 1, ciało porusza się normalnie. degr zmienia sie od 0 to 360.
gdy predkosc to n, ciało porusza się n razy szybciej. wtedy degr musi się zmieniać od 0 do 360/n

0

Twoim problemem nie jest „Prędkość ruchu ciała po okręgu”. Twoim problemem jest zrobienie animacji zależnej od jednej zmiennej...

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