Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Ruch po linii z punktu do punktu...

Ostatnio zmodyfikowano 2014-12-31 18:59
Autor Wiadomość
czosnek17
Temat założony przez niniejszego użytkownika
Ruch po linii z punktu do punktu...
» 2014-12-31 13:47:04
Robię wszystko według tego http://cpp0x.pl/forum/temat/​?id=15985 i nie działa. Obiekt zawsze przemieszcza się w prawo i w dół między 270 - 360 stopni.
C/C++
circle.setPosition( 200, 200 );
sf::Vector2i target( 150, 300 );
angle = atan2( target.x, target.y );
while()
{
    float x = cos( angle );
   
    float y = sin( angle );
   
    circle.move( x, y );
}
P-123730
NopeDotAvi
» 2014-12-31 13:50:50
W google wpisz szymonsiarkiewicz gra sfml, lekcja 3.2
P-123731
czosnek17
Temat założony przez niniejszego użytkownika
» 2014-12-31 14:10:47
Tam jest tak
C/C++
float vx = sin(...);
float vy = - cos(...);
dziwne, bo to na odwrót niż w tamtym temacie. Zmieniło się tyle, że obiekt zawsze idzie w górę i w prawo.
Nie ogarniam tego.
P-123735
RazzorFlame
» 2014-12-31 14:29:57
bo sinus i cosinus przyjmują wartości od -1 do 1. Poza tym źle używasz atan2() Powinieneś podać w argumencie różnicę tych dwóch współrzędnych i najpierw podać współrzędne y a potem x:
C/C++
circle.setPosition( 200, 200 );
sf::Vector2i target( 150, 300 );
angle = atan2( target.y - circle.getPosition().y, target.x - circle.getPosition().x ) * 180 / M_PI;
Teraz jak już będziesz miał kąt to musisz sobie go przekształcić bo możesz otrzymać wartość ujemną:
C/C++
if( angle < 0 )
{
    angle = 360 + angle;
}
Teraz znów zmieniasz jednostkę z stopni na radiany:
angle = angle * M_PI /( double )( 180 );
I następnie:
C/C++
f.x = sin( angle );
f.y = - cos( angle );
O ile się nie myle to właśnie zawsze podawałem wartość przeciwną od cosinusa. Jezeli ten układ sinusów i cosinusów nie będzie działał to popróbuj dawając ujemny sinus albo coś w tym stylu.
P-123736
czosnek17
Temat założony przez niniejszego użytkownika
» 2014-12-31 18:59:19
Już jest ok, dzięki.
C/C++
float y = sin( angle );
float x = cos( angle );
P-123761
« 1 »
  Strona 1 z 1