Jak zrobić program zbliżający punkt 1 do punktu 2?

0

Cześć, mam pytanie (temat). Chodzi o to że mam jeden punkt (punkt1) i punkt1 ma parametry x,y (int). Tak samo jest z punkt2. Punkt1 ma losowo wygenerowane parametry x i y i rysuje kropke na panelu na formie zgodnie z parametrami z punkt1. Tak samo z punkt2. I tej części nie wiem jak zrobić. (ta część) Punkt1 zbliża się do punkt2 (jakby) po skosie. Czyli jego parametry zwiększają się lub zmniejszają (zależy od parametrów punkt2) tak aby parametry punkt1 i punkt2 były takie same. Jak to zrobić? Z góry dzięki, i pozdrawiam.

1

Tag "c#" jest kompletnie niepotrzebny, powinno być raczej "algorytm", bo to może być stosowane w różnych językach.

Zasadniczo rozumiem przez twoje pytanie, że masz ustaloną "prędkość" maksymalną w pikselach na odświeżenie ekranu.

Dane:
Vm - prędkość maksymalna
x1, y1 - położenie punktu 1
x2, y2 - położenie punktu 2

Szukane:
Vx, Vy - ile trzeba dodać odpowiednio do parametru x1 i y1, aby punkt przeniósł się do położenia (x2; y2), nie przekraczając prędkości maksymalnej Vm

Działania:

Wyliczamy odległość po przekątnej od punktu 2 do punktu 1, najpierw odległości w poziomie i pionie:
Sx = x2 - x1
Sy = y2 - y1
A teraz za pomocą twierdzenia Pitagorasa odległość po przekątnej:
S = sqrt(Sx^2 + Sy^2)
Gdzie sqrt() to pierwiastek kwadratowy, zaś a^b to "a do potęgi b".
Teraz wyliczamy, ile odświeżeń będzie wykonanych, by przebyć drogę S w prędkości Vm.
t = S / Vm
Następnie wyliczamy prędkości w poziomie i pionie (Vx i Vy), znając czas (t) oraz odległości w poziomie i pionie (Sx i Sy)
Vx = Sx / t
Vy = Sy / t

Gotowe!
Teraz, za każdym razem, gdy odświeżasz stan (np. ekran), do wartości x1 i y1 (położenie punktu 1) dodajesz wartości Vx i Vy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1