Однорідні координати та матричне представлення двовимірних перетворень
В попередньому параграфі були розглянуті три види перетворень точок на площині. Два з них – операції обертання та масштабування - описуються в у вигляді добутку матриці на вектор, а третя – операція переносу – описується як сума двох векторів. У випадку послідовного виконання довільної комбінації операцій обертання та масштабування результат легко можна записати у вигляді добутку матриць відповідних перетворень. Це буде матриця результуючого повороту та масштабування. Очевидно, що зручніше застосовувати результуючу матрицю замість того, щоб кожний раз заново вираховувати добуток матриць. Але, таким способом неможна отримати результуючу матрицю перетворення, якщо серед послідовності перетворень присутній хоча би один перенос. Матричний добуток в комп’ютерній графіці також називають композицією. Було би зручніше мати математичний апарат, який дозволяє включати в композиції перетворень усі три вище вказані операції. При цьому отримали би значний виграш в швидкості обчислень. Однорідні координати і є цим математичним апаратом.
Двовимірний вектор в однорідних координатах записується у вигляді , де . Число називається масштабним множником. Для того, щоб із вектора, записаного в однорідних координатах отримати вектор в звичайних координатах необхідно розділити перші дві координати на третю: .
В загальному випадку відбувається перехід від n-мірного простору до -мірного. Це перетворення не єдине. Обернене перетворення називається проекцією однорідних координат*.
Розглянемо деякі властивості однорідних координат. Деякі точки, невизначені в n-мірному просторі, стають визначеними при переході до однорідних координат. Наприклад, однорідний вектор в тривимірному просторі відповідає нескінченно віддаленої точки . Оскільки в однорідних координатах цю точку можна представити у вигляді , при , то в тривимірному просторі це відповідає точці .
Розглянемо точку тривимірного простору . Якщо уявити цю точку як однорідне представлення точки двовимірного простору, то її координати будуть . Порівнюючи ці координати із другим видом формул, виведених для центральної перспективної проекції, легко замітити, що двовимірне представлення точки з координатами виглядає як її проекція на площину , як показано на рис. 25.
Рис. 25. Проекція точки на площину .
Аналогічно, розглядаючи застосування однорідних координат для векторів тривимірного простору, можна представити тривимірний простір як проекцію чотиривимірного простору на гиперплощину , якщо .
В однорідних координатах перетворення центральної перспективи можна визначити матричною операцією. Ця матриця записується у вигляді:
Покажемо, що ця матриця визначає перетворення точки об’єкта, заданої в однорідних координатах, в точку перспективної проекції (також в однорідних координатах). Нехай – точка в тривимірному просторі. Її однорідне представлення . Помножимо v на P:
‑ це в точності повторює формули (1), виведені для центральної перспективи.
Тепер точки двовимірного простору будуть описуватися триелементними вектор-рядками, тому і матриці перетворень, на які буде множитися вектор точки, будуть мати розміри 3´3. Запишемо матричне перетворення операції переносу для однорідних координат:
або , де .
При послідовному переносі точки в точку і потім в точку компоненти сумарного вектора переносу є сумами відповідних компонент послідовних векторів переносу. Розглянемо, якими будуть елементи матриці сумарного переносу. Нехай , . Підставивши перше рівняння в друге отримаємо . Матричний добуток, тобто сумарний перенос дорівнює добутку відповідних матриць переносу.
Запишемо матричний вид операції масштабування.
.
Визначимо матрицю масштабування
Так само, як послідовні переноси є адитивними, покажемо, що послідовні масштабування будуть мультиплікативними.
Для операції повороту матричний вигляд буде такий:
Визначимо матрицю повороту
Аналогічно двом попереднім випадкам, покажемо, що матриця повороту залишається такою при послідовних поворотах.
Отже, доведено, що два, а значить і довільна кількість послідовних поворотів можна записати у вигляді однієї матриці сумарного повороту. Також легко помітити що довільна послідовність операцій, яка містить в собі перенос, масштабування та обертання в однорідних координатах, може бути представлена однією матрицею, яка є добутком матриць даних операцій.
Розглянемо, яким чином за допомогою композиції матричних перетворень можна отримати одне загальне результуюче перетворення. Для цього будемо використовувати матриці T, S і R. З точки зору обчислень значно простіше та швидше застосовувати матрицю вже готового перетворення замість того, щоб застосовувати їх послідовно одну за одною. До точки більш ефективно застосовувати одне результуюче перетворення, ніж ряд перетворень один за одним.
Для прикладу розглянемо задачу повороту об’єкта на площині відносно деякої довільної точки . Доки ми вміємо повертати об’єкти тільки навколо початку координат. Але можна уявити цю задачу як послідовність кроків, на кожному з яких будемо застосовуватися тільки елементарна операція: перенос, масштабування або обертання.
От ця послідовність елементарних перетворень (рис. 26):
1. Перенос, при якому точка переходить в початок координат.
2. Поворот на заданий кут.
3. Перенос, при якому точка з початку координат повертається в початкове положення .
Рис. 26. Послідовність перетворень при повороті об’єкта навколо точки на кут a.
Точка . Перший перенос проводиться на вектор , а обернений перенос ‑ на вектор .