Cekol Opublikowano 18 Sierpnia 2009 Udostępnij Opublikowano 18 Sierpnia 2009 Hejo Szukam i szukam, i nie mogę w necie znaleść odpowiednika gmowego point_direction w c++... Bardzo go potrzebuję i proszę was o napisanie takiego algorytmu :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 18 Sierpnia 2009 Udostępnij Opublikowano 18 Sierpnia 2009 https://forum.gmclan.org/index.php?showtopi...point_direction Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cekol Opublikowano 18 Sierpnia 2009 Autor Udostępnij Opublikowano 18 Sierpnia 2009 Nom, ok... Wyskrobałem coś takiego: export real point_direction(real xstart,real ystart,real xend,real yend) { real xdist = xend - xstart; real ydist = yend - ystart; real ang = atan2(xdist,ydist)/ M_PI; return 180-ang*180;//180 - ang; } Lecz dostaje wynik 0 przy pozycji (0,-1) a nie jak jest w gm (1,0) ;< dalej proszę o pomoc :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 18 Sierpnia 2009 Udostępnij Opublikowano 18 Sierpnia 2009 najgłupsze rozwiązanie z możliwych, ale odejmij od wyniku 90. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cekol Opublikowano 18 Sierpnia 2009 Autor Udostępnij Opublikowano 18 Sierpnia 2009 Dobra, działa. Mam takie coś export real point_direction(real xstart,real ystart,real xend,real yend) { real xdist = xend - xstart; real ydist = yend - ystart; real ang = atan2(xdist,ydist)/ M_PI; ang = 270+ang*180; if (ang>360) ang=ang-360; return ang; } I działa idealnie, tak jak w gm. Lecz da się to zrobić, bez tego głupiego if? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hanjuso Opublikowano 18 Sierpnia 2009 Udostępnij Opublikowano 18 Sierpnia 2009 if (ang>360) ang=ang-360; return ang%360; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 19 Sierpnia 2009 Udostępnij Opublikowano 19 Sierpnia 2009 Operator % (Resztę z dzielenia) można tylko używać na liczbach całkowitych ( np. int ) ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 19 Sierpnia 2009 Udostępnij Opublikowano 19 Sierpnia 2009 #include <math.h> double degtorad( double deg ) { return( deg * 3.14/180 ); } double point_direction( double x1, double y1, double x2, double y2 ) { return( atan2( y2-y1, x2-x1 ) / 3.14 * 180 ); } double lengthdir_x( double len, double dir ) { return cos(degtorad(dir))*len; } double lengthdir_y( double len, double dir ) { return sin(degtorad(dir))*len; } Masz jeszcze lengthdiry Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 19 Sierpnia 2009 Udostępnij Opublikowano 19 Sierpnia 2009 Btw. #define degtorad( deg ) deg * PI/180 #define radtodeg( rad ) rad * 180/PI Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 20 Sierpnia 2009 Udostępnij Opublikowano 20 Sierpnia 2009 double point_direction( double x1, double y1, double x2, double y2 ) { return( atan2( y2-y1, x2-x1 ) / PI * 180 ); } jak już coś :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę