Skocz do zawartości

Obrót pozycji?


Farkraj

Rekomendowane odpowiedzi

Mam taki problemik który rozrysowałem sobie na rysunku:

 

d41d87c4b1621dbc57b992e7ebf392eb.jpg

 

Powiedzmy że obiekt O1 w prostokacie 1 stoi na pozycji x i y. Jeżeli zmieniamy direction prostokata to obiekt przechodzi na pozycję O2, Czyli tak jakby swoją wcześniejszą pozycję tylko że w obróconym prostokącie. Rozumienie o co chodzi? Chciałbym wyliczyć jakoś pozycję O2 do której po obrocie prostokąta ma się udać O1. Halp plox :(

Odnośnik do komentarza
Udostępnij na innych stronach

Hmm... nie jestem pewien, ale o ile znasz współrzędne środka prostokąta, można to zrobić tak:

GML
//w o1

var dir,dis

dir=point_direction(x,y,srodekprostokatax,srodekprostokatay);

dis=point_distance(x,y,srodekprostokatax,srodekprostokatay);

x+=lengthdir_x(dir,dis) + lengthdir_x(dir+obrot +180,dis)

y+=lengthdir_y(dir,dis) + lengthdir_y(dir+obrot +180,dis)

Nie jest to najlepsze rozwiązanie, ale powinno działać(chyba że się pomyliłem z kolejnością argumentów w lengthdirach) Polega na tym, że teoretycznie przenosi obiekt do środka prostokąta, a następnie do miejsca docelowego o kąt "obrot" :)

 

ED: Dodałem jeszcze "+180" do argumentów, bo w przeciwnym razie przenosiłby na stronę przeciwną do docelowej :P

 

ED2: Na pewno da się to zrobić za jednym zamachem tylko nie pamiętam jak obliczało się odległość

pierwiastek(a^2+b^2) * sin(alfa) ?? coś kojarzy mi się, ale to tylko skojarzenie :P

Chyba to jest prawidłowe: a^2 + b^2 - 2ab * cos(alfa)

Czyli skoro dis jest cały czas takie same to by wychodziło chyba

2(a^2) - 2(a^2) * cos(obrot)

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...