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
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? |
|
|
|
![]() |
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.
|
|
|
|
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 |
|
|
|
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
|
|
|
|
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 |
|
|
|
![]() ![]() |
|
Aktualny czas: 19.12.2025 - 13:43 |