Дозвольте спробувати дати вам щось десь між відповіддю Світлої іскри та відповіддю Елліота, адже з того, що я прочитав, ви дійсно шукаєте алгоритм, який слід виконувати, а не просто кидаючи на вас математику.
Постановка проблеми: З огляду на те, що у вас є місцеположення A (50, 50)
та заголовок (оскільки ви його не вказали, я стверджую це як y = 2 * x + 25
), знайдіть де B (80, 90)
відносно A
та заголовок.
Те, що ви хочете зробити, насправді досить просто. 1) Перейдіть A
до походження вашої системи. Це просто означає, що значення локальних A
значень будуть значеннями глобальної позиції за мінусом глобальних значень позиції A
. A
стає (0, 0)
і B
стає (30, 40)
.
1.1) Заголовок також потрібно перемістити. Це насправді дуже легко зробити, тому що y-перехоплення в локальних A
термінах завжди дорівнює 0, а нахил не зміниться, тому у нас є y = 2 * x
заголовок.
2) Тепер нам потрібно вирівняти попередній заголовок до осі X. Отже, як ми це робимо? Найпростіший спосіб, концептуально це зробити - це перетворення з x, y координат в полярну систему координат. Полярна система координат передбачає R
відстань до місця та phi
кут повороту від осі x. R
визначається як sqrt(x^2 + y^2)
і phi
визначається як atan(y / x)
. Більшість комп’ютерних мов у цей час просуваються і визначають atan2(y, x)
функцію, яка робить точно так само, як, atan(y/x)
але робить це таким чином, що вихідний сигнал має становити від -180 градусів до 180 градусів, а не від 0 до 360 градусів, але або працює.
B
таким чином стає R = sqrt(30^2 + 40^2) = sqrt(2500) = 50
, і phi = atan2(40, 30) = 53.13
в градусах.
Аналогічно змінюється заголовок. Це трохи складно пояснити, але тому, що заголовок, за визначенням, завжди проходить через наше походження A
, нам не потрібно турбуватися про R
компонент. Заголовки завжди будуть у формі, phi = C
де C
є постійною. У цьому випадку phi = atan(2 * x / x) = atan(2) = 63.435
градуси.
Тепер ми можемо обертати систему, щоб перемістити заголовок до осі X локальної A
системи. Так само, як коли ми перейшли A
до походження системи, все, що нам потрібно зробити, - це відняти phi
заголовок від усіх phi
значень у системі. Таким чином, phi
з B
стає 53.13 - 63.435 = -10.305
градусів.
Нарешті, ми повинні перетворити назад з полярних координат у x, y координати. Формула для цього перетворення є X = R * cos(phi)
і Y = R * sin(phi)
. Для B
тому ми отримуємо X = 50 * cos(-10.305) = 49.2
і Y = 50 * sin(-10.305) = 8.9
, тому B
в місцевій-to - A
координат близька до (49,9)
.
Будемо сподіватися, що це допомагає та є достатньо легким для математики, щоб ви могли наслідувати.