Преобразование точек из одной координаты в другую - PullRequest
0 голосов
/ 04 мая 2018

У меня есть точки данных в 2D координатном пространстве, которые я хочу линейно преобразовать в другое координатное пространство. Изображение ниже немного прояснит ситуацию.

enter image description here

Точки данных, которые у меня есть, находятся в сером координатном пространстве (левый верхний угол A - это точка x = 0, y = 0). Я хочу преобразовать все точки в розовую систему координат, для которой B является ее точкой x = 0, y = 0.

Как бы я поступил так?

1 Ответ

0 голосов
/ 04 мая 2018

Это не линейное преобразование.

Определите эту "систему координат" как выпуклый квад, следующим образом:

enter image description here

Координаты вершины находятся в пространстве параметров u, v. Интерполяция в одном направлении, а затем в другом дает общую точку:

enter image description here

Это билинейный в параметрах u, v. Она становится линейной, только если A + D - B - C = 0, то есть четырехугольник является параллелограммом.


Преобразование между такими системами координат:

  1. Предположим (обязательно), что эти ABCD вершины вложены в "глобальное" декартово пространство
  2. Преобразовать из пространства параметров первой системы в глобальное пространство, используя интерполяцию, как указано выше
  3. Преобразование обратно в пространство параметров путем обращения приведенного выше уравнения к решению пары уравнений:

    enter image description here

    Решения для u, v:

    • 1 для параллелограмма (G = 0)
    • 2 для общего выпуклого четырехугольника, поскольку координатные линии (серые) пересекают особенность в каждом направлении
    • 0 для вогнутого четырехугольника (комплексные решения)
...