Мені потрібно знайти найкоротший напрямок відстані від однієї точки мого 2D світу до іншої точки, де краї загорнуті (як астероїди тощо). Я знаю, як знайти найкоротшу відстань, але намагаюся знайти напрямок.
Найкоротша відстань задається:
int rows = MapY;
int cols = MapX;
int d1 = abs(S.Y - T.Y);
int d2 = abs(S.X - T.X);
int dr = min(d1, rows-d1);
int dc = min(d2, cols-d2);
double dist = sqrt((double)(dr*dr + dc*dc));
Приклад світу
:
: T
:
:--------------:---------
: :
: S :
: :
: :
: T :
: :
:--------------:
На діаграмі краї показані за допомогою: і -. Я також показав завершене повторення світу вгорі праворуч. Я хочу знайти напрямок у градусах від S до T. Отже, найкоротша відстань - до правого верхнього повтору Т., але як я обчислюю напрям, відмічений від S до повторного T у верхньому правому куті?
Я знаю позиції і S, і T, але, мабуть, мені потрібно знайти положення повторного T, однак там більше 1.
Система координат світу починається з 0,0 у верхньому лівому куті, а 0 градусів у напрямку може починатися на Заході.
Здається, це не повинно бути надто важким, але я не зміг розробити рішення. Я сподіваюся, що сомон може допомогти? Будь-які веб-сайти будуть вдячні.