Skocz do zawartości

różnica kątów


Rekomendowane odpowiedzi

chciałem sprawić aby co stepa komp sprawdzał różnice 2 kątów: direction i image_alpha

problem w tym że gdy któryś przekroczy 359 to ma wartość 0 i wtedy całe liczenie jest schrzanione.

Oto kod :

GML
dirangle=image_angle-direction;

Zobrazuje obliczeniami ten problem:

 

jeżeli image_angle=180 a direction=90 to wynik jest 90 ( tu jest tak jak chce )

jeżeli image_angle=180 a direction=270 to wynik jest -90 ( tu też jest dobrze )

 

ale jak

 

image_angle=0 a direction=90 to wynik jest -90 ( tu jest tak jak chce )

image_angle=0 a direction=270 to wynik jest -270 ( tu jest właśnie ten problem bo wynik jest -270 a chcę aby wbył 90 )

 

Zobrazuje jeszcze na obrazku tą sytuację:

liczenieje9.png

 

Chcę aby wyliczył mi zielone pole jak więc to zrobić?

Odnośnik do komentarza
Udostępnij na innych stronach

Może sprawdzaj czy direction jest większe niż 180 i jesli tak to zastosuj takie coś:

GML
roznica_katow = 360 + ( image_angle - direction );

 

;p Niezbyt profesjonalny ten sposób.

 

Z tego można zrobić jeden wzór tylko trzeba się sign(x) pobawić czekaj czekaj.

Odnośnik do komentarza
Udostępnij na innych stronach

Mam tu taki uber skrypt: dirdiv

GML
var dif

if(argument1>argument0+180)

{

dif=-((360-argument1)+argument0)

}

else{

if(argument0>argument1+180)

{

dif=((360-argument0)+argument1)

}

else{

dif=argument1-argument0

}

}

return dif

GML

roznica_katow = dirdiv (image_angle , direction )

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ę...