Skocz do zawartości
Cekol

point_direction w c++?

Rekomendowane odpowiedzi

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 :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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 :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

najgłupsze rozwiązanie z możliwych, ale odejmij od wyniku 90.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

#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

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

double point_direction( double x1, double y1, double x2, double y2 )
{
return( atan2( y2-y1, x2-x1 ) / PI * 180 );
}

 

jak już coś :P

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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

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

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×