![]() |
![]() ![]() |
![]() |
![]()
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ąć:
![]() 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 ![]() 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 ![]() |
|
|
![]()
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
![]() 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 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 03:11 |