Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][HTML5]Canvas, ruch obiektu po krzywej
CuteOne
post
Post #1





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


Witam, mój problem dotyczy poruszania się obiektu pod odpowiednim kątem. Zacznę może od graficznego przedstawienia tego co zamierzam osiągnąć:
(IMG:http://img51.imageshack.us/img51/7267/unled1copyki.jpg)

Pierwszy przykład z obrazka jest prawidłowym ruchem obiektu(niebieskiej kulki) po krzywej, którego mimo moich usilnych starań nie jestem w stanie osiągnąć. Drugi przykład to dodawanie do aktualnej pozycji obiektu(x,y) jednego pixela. Niestety tego typu rozwiązanie zawsze daje kąt 45 stopni a gdy y osiągnie max. wartość obiekt zaczyna poruszać się po linii prostej.

Trzeci przykład to "porcjowanie" czyli podczas ruchu obiektu co 2px w pozycji x dodawany jest 1px w pozycji y
[JAVASCRIPT] pobierz, plaintext
  1. var obiekt = {x: 10, y: 10, cx:48, cy:18};
  2. var p = 0;
  3. var proporcja = Math.floor(obiekt.cx / obiekt.cy); // proporcja = 2
  4.  
  5. // pętla animacji
  6. obiekt.x += 1;
  7. if(p == proporcja) {
  8. obiekt.y += 1; // co 2 przejścia pętli zostaje dodany 1px do y
  9. p++;
  10. }
  11. // rysowanie obiektu
[JAVASCRIPT] pobierz, plaintext

x - pozycja startowa na osi X
y - pozycja startowa na osi Y
cx - pozycja końcowa na osi X
cy - pozycja końcowa na osi Y

Jak widać na obrazku takie rozwiązanie również nie wypali ponieważ powstaną schodki (IMG:style_emoticons/default/sad.gif)

Próbowałem obliczyć kąt pod jakim obiekt powinien się poruszać za pomocą funkcji atan2() niestety nie byłem w stanie dla każdego przejścia pętli obliczyć aktualnego położenia obiektu.

Pomysły mi się skończyły, więc piszę do was (IMG:style_emoticons/default/smile.gif) może ktoś zna rozwiązanie mojego problemu?


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
JohnnyB
post
Post #2





Grupa: Zarejestrowani
Postów: 76
Pomógł: 19
Dołączył: 19.01.2010

Ostrzeżenie: (0%)
-----


chyba raczej Math.tan, jeśli masz podany kąt. Pamiętaj tylko, że wartość kąta podaje się w radianach.
Go to the top of the page
+Quote Post
CuteOne
post
Post #3





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


raczej nie (IMG:style_emoticons/default/smile.gif) atan2 ładnie wylicza kąt biorąc pod uwagę położenie obiektu na osi x,y bez konieczności obliczania kąta alfa -> przeliczania na radiany.

Problemem jest uzyskanie położenia obiektu po każdorazowym przejściu pętli.

Ten post edytował CuteOne 11.08.2011, 19:43:19
Go to the top of the page
+Quote Post
JohnnyB
post
Post #4





Grupa: Zarejestrowani
Postów: 76
Pomógł: 19
Dołączył: 19.01.2010

Ostrzeżenie: (0%)
-----


a co masz dane - punkt początkowy i końcowy? Jeśli tak, to najprościej skorzystać z równania prostej y=ax+b
Go to the top of the page
+Quote Post
mortus
post
Post #5





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Równanie prostej przechodzącej przez zadane punkty: (y-yA)(xB-xA) - (yB-yA)(x-xA) = 0
Zatem:
(y-10)(45-10)-(18-10)(x-10) = 0
35y - 350 - 8x + 80 = 0
35y = 8x + 270
y = (8x + 270) / 35
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.12.2025 - 13:43