Однорідні координати

Матеріал з testwiki
Версія від 06:38, 16 грудня 2022, створена imported>Роман Пришляк (Матриці елементарних перетворень евклідового простору в однорідних координатах)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Однорідні координати — координати, що володіють властивістю, за якої об'єкт, що визначається цими координатами, не змінюється при множенні всіх координат на одне і те ж число, відмінне від нуля. Однорідні координати мають таке ж значення для проєктивної геометрії, як декартові координати для Евклідової геометрії. Поняття однорідних координат увів Август Фердинанд Мебіус у 1827 році у роботі Der barycentrische Calcül.[1][2]

За допомогою однорідних координат навіть координати нескінченно віддалених точок можна представити за допомогою скінченних координат. Формули, записані в однорідних координатах, найчастіше простіші та більш симетричні, ніж їхні вирази в декартових координатах. Однорідні координати мають широкий спектр застосування, в тому числі в комп'ютерній графіці та в 3D комп'ютерному зорі, де вони дозволяють виконувати афінні перетворення і, загалом, проєктивні перетворення, через що їх легко представити у вигляді матриці.

Однорідні координати не задають однозначно точку простору. Наприклад, (1, 1, 1, 1) і (2, 2, 2, 2) задають одну і ту ж точку (1, 1, 1). При переході до однорідних координат для точки з координатами (x, у, z) пропонується узяти набір (x, у, z, 1). В процесі перетворень четверта координата w може змінюватися.

Зворотний перехід до декартових координат здійснюється за допомогою ділення на w-координату.

Вступ

Дійсну проєктивну площину можна розглядати як евклідову площину, яка має додаткові точки, які називаються точками на нескінченності, котрі вважають такими, що лежать на новій прямій, Шаблон:Нп. Існує точка на нескінченності, яка відповідає кожному напрямкові (який чисельно задається нахилом прямої), неформально визначена як границя точки, яка рухається в напрямку від початку. Стверджують, що паралельні лінії на евклідовій площині перетинаються в точці на нескінченності, яка відповідає їхньому спільному напрямкові. Для точки Шаблон:Nowrap на Евклідовій площині і будь-якого ненульового дійсного числа Z трійка Шаблон:Nowrap називається множиною однорідних координат точки. За цим визначенням, множення трьох однорідних координат на одне ненульове значення дає новий набір однорідних координат тієї самої точки. Зокрема Шаблон:Nowrap є множиною однорідних координат для точки Шаблон:Nowrap. Наприклад, точку декартової системи Шаблон:Nowrap можна задати в однорідних координатах як Шаблон:Nowrap або Шаблон:Nowrap. Початкові декартові координати можна отримати шляхом ділення перших двох значень на третє. Таким чином, одну точку в декартових координатах можна задавати нескінченною кількістю однорідних координат.

Рівняння прямої, що проходить через початок Шаблон:Nowrap, можна записати як Шаблон:Nowrap, де n і m обидва не дорівнюють 0. В параметричній формі це можна записати Шаблон:Nowrap. Нехай Z = 1/t, тоді координати точки на прямій можуть бути записані як Шаблон:Nowrap. В однорідних координатах це буде Шаблон:Nowrap. У граничному випадкові, коли t наближається до нескінченності, тобто точка рухається від початку координат, Z наближається до 0 і однорідні координати точки будуть Шаблон:Nowrap. Таким чином, ми визначаємо Шаблон:Nowrap як однорідні координати точки на нескінченності, яка відповідає напрямкові прямої Шаблон:Nowrap. Позаяк кожна пряма в Евклідовій площині паралельна прямій, яка проходить через початок, і паралельні лінії мають одну точку на нескінченності, нескінченна точка на кожній прямій Евклідової площини має дані однорідні координати.

Як підсумок:

  • Будь-яка точка на проєктивній площині задається трійкою Шаблон:Nowrap, що називається однорідними координатами або проєктивними координатами точки, де X, Y і Z всі не дорівнюють 0.
  • Точка, задана певним набором однорідних координат, залишиться незмінною, якщо її координати помножити на один і той же коефіцієнт.
  • І навпаки, дві множини однорідних координат задають одну і ту ж точку тоді і тільки тоді, коли одну з них можна отримати з іншої шляхом множення на одну ненульову константу.
  • Якщо Z не дорівнює 0, точка відповідає точці Шаблон:Nowrap на Евклідовій площині.
  • Якщо Z дорівнює 0, точка відповідає точці на нескінченності.

Зазначимо, що трійка координат Шаблон:Nowrap не представляє жодної точки. Початок координат задається як Шаблон:Nowrap.[3]

Позначення

Деякі автори використовують інше позначення для однорідних координат, яке дозволяє відрізнити їх від Декартових координат. Використовується двокрапка замість коми, наприклад (x:y:z) замість написання Шаблон:Nowrap, що підкреслює зміст того, що координати варто розглядати як співвідношення.[4] Квадратні дужки, як в Шаблон:Nowrap, підкреслюють, що багато наборів координат пов'язано з однією точкою.[5] Деякі автори використовують поєднання двокрапок і квадратних дужок: [x:y:z].[6]

Інші виміри

Можна провести аналогію для проєктивних просторів, що не є площиною. Так, наприклад, точки на проєктивній прямій можуть задаватися як пари координат Шаблон:Nowrap, обидві не рівні нулеві. В такому випадку точка на нескінченності є Шаблон:Nowrap. Аналогічно точка у проєктивному просторі n-виміру задається набором (n + 1) координат.[7]

Матриці елементарних перетворень евклідового простору в однорідних координатах

Нехай задано точку евклідового простору 𝔼3 з координатами (x,y,z). Їй ставиться у відповідність точка з однорідними координатами (x,y,z,1), з якою виконуються потрібні перетворення. Після цього отримані координати (x,y,z,w) переводяться у декартові координати (xw,yw,zw).

Використання матричного запису дозволяє отримати економію в кількості зроблених операцій. Позаяк добуток матриць асоціативний, то можна спочатку обчислити необхідне перетворення як добуток матриць, і тільки потім застосувати його до координат точок.


Паралельне перенесення: T_ = (100tx010ty001tz0001) T_(x,y,z,1)T=(x+tx,y+ty,z+tz,1)T
Обертання навколо осі x: Rx_ = (10000cosαsinα00sinαcosα00001)
Обертання навколо осі y: Ry_ = (cosβ0sinβ00100sinβ0cosβ00001)
Обертання навколо осі z: Rz_ = (cosγsinγ00sinγcosγ0000100001)
Масштабування: S_ = (sx0000sy0000sz00001) S_(x,y,z,1)T=(sxx,syy,szz,1)T
Перспективне перетворення: P_ = (100001000010001d0) P_(x,y,z,1)T=(x,y,z,zd)T
Ортогональна проєкція: Porth,z=0_ = (1000010000000001) Porth,z=0_(x,y,z,1)T=(x,y,0,1)T

Посилання

Примітки

Шаблон:Примітки

Див. також