Рассчитать матрицу преобразования трехмерной плоскости по 4 углам - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть трехмерная плоскость в начале координат, которая выровнена с мировой плоскостью X / Y (лицом к оси Z). Затем у меня есть четыре трехмерных положения вершин для новой плоскости, преобразованной в какое-то место в трехмерном пространстве.

Обе плоскости имеют одинаковый порядок намотки для всех 4 вершин.

У меня есть гарантия, что 4 угла плоские, а перекос отсутствует (возможно, плоскость все еще масштабировалась по осям x / y).

Как мне создать матрицу преобразования 4x4, учитывая последние 4 угла этой плоскости?

1 Ответ

0 голосов
/ 06 ноября 2018

Предположим, что самолет выглядит так:

enter image description here

Построить "локальную основу" плоскости, используя:

  • Ось X параллельна AD / BC
  • Ось Y параллельна AB / CD
  • Ось Z параллельна нормали
  • Происхождение O в центре четырехугольника

enter image description here

Матрица преобразования может быть разбита на 3 компонентов:


1 - Масштаб

Поскольку исходный квад имеет размеры 1x1 единиц, коэффициент масштабирования вдоль локальных осей X и Y представляет собой просто длины сторон, то есть длины AD и AB соответственно. Игнорируйте масштабный коэффициент Z, так как четырехугольник плоский.

Следовательно, составляющая масштабирования определяется как:

enter image description here


2 - Вращение

Компонент вращения может быть непосредственно построен из локальных базисных осей X, Y, Z; каждый вектор (нормализованный) является соответствующим столбцом матрицы.

enter image description here

Следовательно, вращательная составляющая определяется как:

enter image description here


3 - Перевод

Это самый простой; вектор трансляции - это просто абсолютная координата центра квада O и он равен последнему столбцу матрицы.

enter image description here

Поэтому трансляционная составляющая определяется как:

enter image description here


Окончательную матрицу можно получить, умножив вышеприведенное в следующем порядке:

enter image description here

т.е. компоненты применяются в порядке 1 * 2 3 .

...