Предположим, что самолет выглядит так:
![enter image description here](https://i.stack.imgur.com/3TjoR.png)
Построить "локальную основу" плоскости, используя:
- Ось X параллельна AD / BC
- Ось Y параллельна AB / CD
- Ось Z параллельна нормали
- Происхождение O в центре четырехугольника
![enter image description here](https://i.stack.imgur.com/VIORk.png)
Матрица преобразования может быть разбита на 3 компонентов:
1 - Масштаб
Поскольку исходный квад имеет размеры 1x1 единиц, коэффициент масштабирования вдоль локальных осей X и Y представляет собой просто длины сторон, то есть длины AD и AB соответственно. Игнорируйте масштабный коэффициент Z, так как четырехугольник плоский.
Следовательно, составляющая масштабирования определяется как:
![enter image description here](https://i.stack.imgur.com/nPi9Q.png)
2 - Вращение
Компонент вращения может быть непосредственно построен из локальных базисных осей X, Y, Z; каждый вектор (нормализованный) является соответствующим столбцом матрицы.
![enter image description here](https://i.stack.imgur.com/iilwr.png)
Следовательно, вращательная составляющая определяется как:
![enter image description here](https://i.stack.imgur.com/9qGlO.png)
3 - Перевод
Это самый простой; вектор трансляции - это просто абсолютная координата центра квада O и он равен последнему столбцу матрицы.
![enter image description here](https://i.stack.imgur.com/ht0es.png)
Поэтому трансляционная составляющая определяется как:
![enter image description here](https://i.stack.imgur.com/bX0Ty.png)
Окончательную матрицу можно получить, умножив вышеприведенное в следующем порядке:
![enter image description here](https://i.stack.imgur.com/lq6QB.png)
т.е. компоненты применяются в порядке 1 * 2 ⇨ 3 .