[C++] Allegro Przemieszczenie obiektu do celu po prostej


(Kamil Kocurek) #1

Witam, ostatnio piszę program i mam pewien problem, Chcę przemieścić obiekt po linii prostej w miejsce gdzie klikniemy myszką.

Int klik_x, klik_y; //Współrzędne miejsca w, które klikniemy

int obiekt_x, obiekt_y; //Współrzędne obiektu do przesunięcia

Sprawa niby prosta ale rzecz w tym by obiekt był przesuwany pixel po pixelu, jak mógłbym to zrobić?


(Drobok) #2

podstawy matematyki, funkcja przechodząca przez 2pkt i robisz sobie forem zmianę x o 1 i przesuwasz y o daną wartość lub odwrotnie.


(Kamil Kocurek) #3

Jak dokładnie to zrobić? Jestem dopiero w gimnazjum i nie mam pomysłu jak napisać takową funkcję.


(Drobok) #4

y=(y2-y1)/(x2-x1)(x-x2)+y1


(Kamil Kocurek) #5

A jak zapisać to w kodzie?


(Drobok) #6

x to twoja zmienna :stuck_out_tongue:


(Kamil Kocurek) #7

A y to?


(Drobok) #8

([alex]) #9
int klik_x, klik_y; //Współrzędne miejsca w, które klikniemy

int old_x, old_y; // stąd obiekt zaczął podróż

int obiekt_x, obiekt_y; //Współrzędne obiektu do przesunięcia

int speed=10; // prędkość

int time=0; //czas


int dx=klik_x-old_x,dy=klik_y-old_y;

int len=(int)sqrt(dx*dx+dy*dy),trip=min(len,speed*(time++));

obiekt_x=old_x+((klik_x-old_x)*trip+(len>>1))/len;

obiekt_y=old_y+((klik_y-old_y)*trip+(len>>1))/len;