Клуб API Карт

расчет координат перпендикуляра

isocorp
25 февраля 2013, 14:34

 Дано: две точки A и B.

var prev = [55.575358,37.600963];
var next = [55.596356,37.508095];

 

Надо: найти координаты точки C такой, что треугольник ABC - прямоугольный c прямым углом B, а AB=BC.

 

В обычной системе координат это сделать просто:

Берем вектор между A и B. "Поворачиваем его" на 90 градусов, меняя у одной из кооржинат знак.

Прибавляем к этому вектору координаты B и результат. В данной системе угол получается "непрямой".

Каким же всетаки образом найти точку C?

3 комментария
Подписаться на комментарии к посту

Нужно учесть, что точек соответствующих заявленным требованиям, по меньшей мере, две.

1. Через разницу коодинат находим длину отрезка AB
2. Так как АВ = ВС, можем использовать полярную систему координат для поворта точки А на 90 градусов. При повороте признаем, что точно B будет являться центром нашей полярной системы координат о полярной системе координат
3. В полярной системе координат мы имеем следующие координаты наших точек B(0, 0), A(r, 0), C(r, 90), где r - это длина отрезка AB. (r, q) - координаты в полярной системе координат, где r - это расстояние от центра координат, а q - угол поворота.
4. Далее осуществляем поворот координат точки С в нормальную декартову систему координат. x = r*cos(q), а y = r*sin(q)
5. Далее полученные координаты точки С нужно прибавить без изменения их знака к первоначальным координатам точки B. Это нужно так как координаты точки B нам известны в координатной системе центр которой, скорее всего не  лежит в точке B. И нам нужно учесть этот факт. 

Переведите координаты точки из гео в пиксели

Произведите описанную Вами операцию

Переведите координаты точки С из пикселей в гео координаты