Pozwól, że spróbuję dać ci coś pomiędzy odpowiedzią The Light Spark a odpowiedzią Elliota, ponieważ z tego, co czytam, naprawdę szukasz algorytmu do naśladowania, a nie tylko rzuconej na ciebie matematyki.
Opis problemu: Biorąc pod uwagę, że masz lokalizację A (50, 50)
i nagłówek (ponieważ nie podałeś go, potwierdzę to jako y = 2 * x + 25
), znajdź, gdzie B (80, 90)
jest relacja A
i nagłówek.
To, co chcesz zrobić, jest dość proste. 1) Przenieś A
się do źródła swojego systemu. Oznacza to po prostu, że lokalnymi A
wartościami będą globalne wartości pozycji minus globalne wartości pozycji A
. A
staje się (0, 0)
i B
staje (30, 40)
.
1.1) Nagłówek również musi zostać przesunięty. Jest to w rzeczywistości bardzo łatwe do zrobienia, ponieważ punkt przecięcia y w lokalnych A
warunkach to zawsze 0, a nachylenie nie zmieni się, więc mamy y = 2 * x
jako nagłówek.
2) Teraz musimy wyrównać poprzedni nagłówek do osi X. Więc jak to robimy? Najprościej, koncepcyjnie, jest to konwersja z współrzędnych x, y na biegunowy układ współrzędnych. Polarny układ współrzędnych obejmuje R
odległość do położenia i phi
kąt obrotu od osi x. R
jest zdefiniowany jako sqrt(x^2 + y^2)
i phi
jest zdefiniowany jako atan(y / x)
. Obecnie większość języków komputerowych definiuje atan2(y, x)
funkcję, która robi dokładnie to samo, atan(y/x)
ale robi to w taki sposób, że wyniki zwykle wynoszą od -180 stopni do 180 stopni zamiast 0 stopni do 360 stopni, ale albo działają.
B
w ten sposób staje się R = sqrt(30^2 + 40^2) = sqrt(2500) = 50
i phi = atan2(40, 30) = 53.13
w stopniach.
Podobnie nagłówek teraz się zmienia. Jest to nieco trudne do wyjaśnienia, ale ponieważ nagłówek z definicji zawsze przechodzi przez nasze pochodzenie A
, nie musimy się martwić o R
komponent. Nagłówki są zawsze będzie w formie phi = C
, gdzie C
jest stała. W tym przypadku phi = atan(2 * x / x) = atan(2) = 63.435
stopnie.
Teraz możemy obrócić system, aby przesunąć nagłówek do osi X systemu lokalnego A
. Podobnie jak po przejściu A
do początku systemu, wszystko, co musimy zrobić, to odjąć phi
nagłówek od wszystkich phi
wartości w systemie. Więc phi
of B
staje się 53.13 - 63.435 = -10.305
stopniami.
Na koniec musimy przekonwertować z współrzędnych biegunowych na współrzędne x, y. Formułą wykonania tej transformacji są X = R * cos(phi)
i Y = R * sin(phi)
. Dla B
zatem mamy X = 50 * cos(-10.305) = 49.2
i Y = 50 * sin(-10.305) = 8.9
tak B
w lokalnych-to- A
współrzędnych znajduje się w pobliżu (49,9)
.
Mam nadzieję, że to pomaga i jest wystarczająco lekkie dla matematyki, abyś podążał za nią.