Дозвольте спробувати дати вам щось десь між відповіддю Світлої іскри та відповіддю Елліота, адже з того, що я прочитав, ви дійсно шукаєте алгоритм, який слід виконувати, а не просто кидаючи на вас математику.
Постановка проблеми: З огляду на те, що у вас є місцеположення 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).
Будемо сподіватися, що це допомагає та є достатньо легким для математики, щоб ви могли наслідувати.