Преобразовать точку (x, y) в ограничивающей рамке [(x1, y1), (x2, y2), (x3, y3), (x4, y4)] для учета заголовка - PullRequest
0 голосов
/ 15 апреля 2020

Нужна помощь в преобразовании точки (716, 493) в ограничительной рамке в перспективу с углом 0 градусов.

  • Текущий курс: 307
  • точка: 716, 493
  • x1: 711, y1: 554
  • x2: 659, y2: 519
  • x3: 708, y3: 479
  • x4: 758, y4 : 512

В настоящее время эта точка является точной с курсом 307 градусов, но мне нужно переместить эту точку с точки зрения курса 0 градусов. Причина для конверсии - я накладываю эту точку поверх другого ограничивающего прямоугольника с углом наклона 0 градусов. Как вы можете себе представить, точка отклоняется от разницы в градусах между текущей точкой и 0 градусами, но я не уверен, как рассчитать, какой должна быть точка x, y.

Любая помощь приветствуется !!

Для всех таких не гениев, как я, я нашел алгоритм поворота точки относительно начала координат на определенное число градусов:

function rotate(origin, point, angle){
var ox = origin[0];
var oy = origin[1];

var px = point[0];
var py = point[1];

var qx = ox + Math.cos(angle) * (px - ox) - Math.sin(angle) * (py - oy);
var qy = oy + Math.sin(angle) * (px - ox) + Math.cos(angle) * (py - oy);

return [qx,qy];
}

rotate([0,0],[716,493],-53 * Math.PI/ 180)

Так что я считаю, что это правильно. угол должен быть в радианах. Итак, я хотел повернуть свою точку от 307 до 90 градусов, чтобы я взял разницу 360 - 307 = 53, а затем отрицаю угол, чтобы переместить это число градусов по часовой стрелке.

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

...