Біографії Характеристики Аналіз

Перетворення на площині та у просторі. Афінні перетворення

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

Растрові та векторні зображення

Розрізняють два види зображень: растрові та векторні.
Растрове зображення складається з багатьох точок - пікселів (від англ. pixel - PIcture ELement), кожен піксель має певний колір. Чим щільніше розташовані пікселі, що менше їх розміри і що більше кольорів, то вище якість картинки. Приклади растрових зображень: офсетний (газетний) друк, зображення на екрані комп'ютера, сканований малюнок. При гарній роздільній здатності пристроїв графічного виводу досягається дуже висока якість растрових зображень, але, на жаль, робота з ними вкрай незручна, а при масштабуванні якість втрачається.
Векторне зображення в найпростішому випадку складається не з точок, а з безлічі прямих відрізків, заданих координатами їх кінців. Таке зображення легко масштабується без втрати якості та легко піддається обробці. Практично у всіх графічних пакетах, що використовуються в САПР, інформація подається у векторному вигляді.

Афінні перетворення на площині

Допустимо, на площині введена прямолінійна координатна система. Тоді кожній точці M ставиться у відповідність упорядкована пара чисел (x, y)її координат (рис. 1). Вводячи на площині ще одну прямолінійну систему координат, поставимо у відповідність тій же точці M іншу пару чисел - (x*, y*).

Перехід від однієї прямолінійної координатної системи на площині до іншої описується такими співвідношеннями:

(*)

де - довільні числа, пов'язані нерівністю:

Надалі розглядатимемо формули (*) як правило, згідно з яким у заданій системі координат перетворюються точки площини.

В афінних перетвореннях особливу роль відіграють кілька важливих окремих випадків, що мають геометричні характеристики, що добре простежуються.

А. Поворот навколо початкової точки на кут j (рис. 2) описується формулами

Б. Розтягування (стиснення) уздовж координатних осей (рис. 2б) можна задати так:

В. Відображення щодо осі абсцис (рис. 2в) задається за допомогою формул

Р. Перенесення (рис. 2г) забезпечують співвідношення

Як доводиться у курсі аналітичної геометрії, будь-яке перетворення виду (*) завжди можна як послідовне виконання (суперпозицію) найпростіших перетворень виду А, Б, У і Р.
Для ефективного використання цих відомих формул у завданнях комп'ютерної графіки зручнішим є їх матричний запис. Матриці для випадків А, Б і В легко будуються і мають відповідно такий вигляд:

Для вирішення завдань дуже бажано охопити матричним підходом усі чотири найпростіші перетворення (у тому числі і перенесення), а, отже, і загальне афінне перетворення. Цього можна досягти шляхом опису довільної точки площини не двома координатами, як це було зроблено вище, а впорядкованою трійкою чисел.

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

Нехай M- довільна точка площини з координатами xі y, обчисленими щодо заданої прямолінійної координатної системи Однорідними координатами цієї точки називається будь-яка трійка одночасно нерівних нулю чисел x1, x2, x3,пов'язаними із заданими числами xі yнаступними співвідношеннями:


При вирішенні завдань комп'ютерної графіки однорідні координати зазвичай вводяться так: довільною точкою M(x, y)площині ставиться у відповідність точка M*(x, y, 1)у просторі (рис. 3).

За допомогою трійок однорідних координат та матриць третього порядку можна описати будь-яке афінне перетворення на площині. Порівнюючи рівняння (*) і нижченаведене, матричне:

,

Неважко помітити, що після перемноження виразів, що стоять у правій частині останнього співвідношення, виходять обидві формули (*) та тотожність 1=1. Таким чином, порівнювані записи є рівносильними.

Афінні перетворення у просторі

Для виконання просторових побудов, аналогічно двовимірному завданню, три координати точки (x, y, z)замінюються четвіркою чисел (x, y, z, 1). Це дає можливість скористатися матричним записом і складніших тривимірних завданнях.

Будь-яке афінне перетворення у тривимірному просторі може бути представлене у вигляді суперпозиції обертань, розтягувань, відбитків та переносів. Математично всі перетворення зводяться до перемноження матриць четвертого порядку. Наприклад, матриця обертання навколо осі абсцис на кут j має вигляд:

.

Види проектування

Зображення тривимірних об'єктів на картинній площині пов'язане ще з однією геометричною операцією - проектуванням за допомогою пучка прямих.

У комп'ютерній графіці застосовується кілька різних видів проектування. Найчастіше використовується паралельне та центральне проектування.

Для отримання проекцій об'єкта на картинну площину необхідно провести через кожну його пряму точку із заданого проецірующего пучка і потім знайти координати точки перетину цієї прямої з площиною зображення. У разі центрального проектування всі прямі виходять із однієї точки - центру пучка. При паралельному проектуванні вважається, що центр пучка розташований у нескінченності (рис. 4). Математично операція проектування також зводиться до перемноження відповідних матриць.

Візьмемо на площині (чи у просторі) якийсь вектор (рис. 142). При афінному перетворенні точки переходять відповідно в точки , що мають відносно нового репера ті ж координати, які мали відносно старого. Так як координати вектора виходять віднімання координат його початкової точки з координат його кінця, то координати вектора щодо нового репера ті ж, що і координати вектора щодо старого репера. Отже:

При афінному перетворенні вектора ставиться у відповідність вектор , що має щодо нового репера ті ж координати, які вектор мав відносно старого.

Звідси одразу випливає, що при афініому перетворенні рівним векторам відповідають рівні, так що:

2° Афінне перетворення площини (простору) породжує однозначне відображення на себе (перетворення) різноманіття V всіх вільних векторів площини (відповідно простору).

Це перетворення має таку властивість лінійності: якщо при даному перетворенні векторів і v відповідають вектори u, v, то вектору буде відповідати вектор , а вектору - вектор Лі (доводиться відразу переходом до координат). З якості лінійності випливає, далі:

Якщо при цьому афінному перетворенні векторам відповідають вектори, то будь-якої лінійної комбінації

векторів відповідає лінійна комбінація

векторів (з тими самими коефіцієнтами).

Оскільки при афінному перетворенні нульовому вектору явно відповідає нульовий, то з доведеного випливає:

4° При афінному перетворенні лінійна залежність векторів зберігається , отже, всякі два колінеарні вектори переходять у колінеарні, всякі три компланарні вектори переходять у компланарні).

5° Зворотне перетворення на афінне перетворення є афінне перетворення.

Насправді, якщо дане аффннное перетворення А площині задається переходом від репера до репера, то афінне перетворення, що задається переходом від репера до репера, є, як легко бачити, перетворення, зворотне до перетворення А.

Те саме і для простору.

Ми бачили, що з афінному перетворенні лінійна залежність векторів зберігається. Зберігається і лінійна незалежність векторів:

6° При афінному перетворенні А всяка лінійно незалежна система їх векторів, . переходив у лінійно незалежну - інакше при афінному перетворенні , зворотному до А, лінійно залежна система і . перейшла б до лінійно незалежної, що, як знаємо, неможливо.

Так як репер є система лінійно незалежних векторів (двох на площині, трьох в просторі), прикладених до цієї точки О, то при афінному перетворенні кожен репер перетворюється на репер. Більше того, має місце пропозиція

7° При афінному відображенні (заданому переходом від репера I до репера ) всякий репер II перетворюється на репер [ і всяка точка М (будь-який вектор і) перетворюється на точку М (у вектор ) з тими самими координатами щодо репера , які точка М і вектор і мали щодо репера ІІ.

Доказ у разі площини і у разі простору той самий. Обмежимося випадком поверхні. Нехай ІІ є репер (рис. 143), а - репер спочатку твердження, що стосується векторів. Якщо вектор має відносно репера координати , то . Але тоді образ вектора і є, за якістю 3°, вектор

має координати щодо репера. Нехай точка М має координати щодо репера.

Тоді , так що, за попереднім, щодо репера сектор ОМ, а значить, і точка М мають координати . Твердження доведене.

Доведене твердження є суттєвим: з нього випливає, що, задавши афінне перетворення переходом від якого-небудь репера до репера, ми можемо задати його, взявши як вихідний будь-який репер і вказавши той репер, в який він повинен перейти.

Як додаток щойно зробленого зауваження доведемо, що добуток двох афінних перетворень є афінне перетворення.

Справді, нехай афінне перетворення визначається переходом від репера I до репера II. Афінне перетворення ми можемо, по щойно доведеному, задати переходом від репера II до якогось репера III. Тоді афінне перетворення, яке задається переходом від репера I до репера III, є, очевидно, твір перетворення на перетворення.

Зауваження 1. Щойно доведені властивості 1° - 7° афінних перетворень, очевидно, мають місце й для афінних відображень однієї площини в іншу (одного екземпляра тривимірного простору в інший).

Тотожне перетворення площини, відповідно до простору, є, очевидно, афінне перетворення. Згадаймо, що перетворення, протилежне афінному, є афінне. Нарешті, як ми щойно довели, твір двох афінних перетворень є афінним перетворенням. Звідси - на підставі умови, даної в § 6, п. 6, Додатки, - відразу випливає наступна основна

Теорема 1. У групі всіх перетворень площини (простору) афінні перетворення утворюють підгрупу.

p align="justify"> Серед афінних перетворень руху виділяються тим, що вони можуть бути задані переходом від однієї прямокутної системи координат до іншої, теж прямокутної і має той же масштаб. Зворотне перетворення на рух є рух, і добуток двох рухів є рух. Так як тотожне перетворення є окремий випадок руху, то (у повній аналогії з теоремою 1) має місце і

Теорема 1. У групі всіх афінних перетворень руху утворюють підгрупу.

Продовжуємо перерахування найпростіших властивостей афінних перетворень та відображень.

Три точки тоді й лише тоді колінеарні (тобто лежать на одній прямій), коли вектори колінеарні. Оскільки колінеарність векторів при афінному перетворенні зберігається, то зберігається і колінеарність точок. Звідси випливає:

При афінному відображенні (площині чи просторі) пряма перетворюється на пряму.

Ми зараз дамо другий доказ цього факту.

Нехай дано афінне відображення. Воно полягає в тому, що кожна точка М з координатами (у координатній системі) переходить у точку М, що має ті ж координати в другій системі. Звідси випливає:

9° При даному афінному відображенні (визначеному переходом від репера до репера) безліч всіх точок, координати яких (у координатній системі) задовольняють деякому Рівнянню, переходить в безліч точок, координати яких в системі задовольняють тому ж рівнянню.

Зокрема, пряма з рівнянням

(У системі) перейде в пряму, що має те ж рівняння, але тільки в системі координат.

Так само при афінному перетворенні простору (певному переходом від репера до репера) площина, що має в системі рівняння

перетворюється на площину, має те саме рівняння (2), але у системі координат .

Пряма, задана у просторі своїм «загальним рівнянням»

або тим чи іншим його спеціальним різновидом, наприклад канонічним рівнянням

при даному афінному перетворенні перейде в пряму, що має ті ж рівняння, але тільки в системі координат . Отже, доведено

Теорема 2. При афінному перетворенні площини, відповідно до простору, прямі переходять у прямі, площини переходять у площині.

При цьому зберігається паралельність.

Справді, якщо дві прямі (або дві площини, або пряма і площина) паралельні, їх рівняння щодо репера задовольняють відомим умовам паралельності; але образи цих прямих (площин) мають самі рівняння щодо репера , і, отже, задовольняють тим самим умовам паралельності.

Примітка 2. Збереження паралельності при афінному перетворенні можна вивести і користуючись тим, що афінне перетворення однозначно взаємно.

Справді, при кожному взаємно однозначному відображенні (наприклад, простору він) образ перетину двох (будь-яких) множин є перетин образів цих множин.

Отже, дві множини, що перетинаються, при всякому взаємно однозначному відображенні переходять у пересічні.

Звідси випливає, що при афінному перетворенні площини дві паралельні прямі, а при афінному відображенні простору дві паралельні площини переходять у паралельні; зберігається і властивість паралельності між прямою та площиною.

Нехай у просторі дано дві паралельні прямі; вони лежать у одній площині і перетинаються. При афінному перетворенні простору ці дві прямі перейдуть у дві прямі, що також лежать в одній площині і не перетинаються, тобто в дві паралельні прямі.

Теорема 3. При афінному перетворенні площини (простору), що переводить пряму d у пряму , відрізок прямий d переходить у відрізок прямий а точка М прямий d, що ділить відрізок у цьому відношенні К, переходить у точку

М прямий d, що ділить відрізок у тому ж відношенні (рис. 144).

Доведення. Так як при позитивному А. ми отримуємо точки, що лежать усередині відрізка (відповідно а при негативному - поза цим відрізком, то з другого твердження теореми 3 випливає перше. Доводимо друге твердження теореми 3, обмежуючись випадком площини. Нехай (в системі координат) маємо

Оскільки точка М ділить відрізок щодо , то

у просторі до цих рівностей приєднається ще рівність. При даному афінному перетворенні точки перейдуть у точки з тими самими координатами, як і в точок , але у координатної системі . Ці координати пов'язані, як і раніше, співвідношеннями (3), з яких випливає, що ділить відрізок ММ щодо . Цим теорема 3 доведена.

Нехай при афінному перетворенні простору А площина відображається на площину . Візьмемо в площині який-небудь репер, тобто пару неколієарних векторів, прикладених до якоїсь точки про (рис. 145). При перетворенні А точка про площину перейде в точку про площину, неколлінеарні вектори перейдуть у вектори неколлінеарні, тобто репер від площини перейде в репер площині.

Всякий вектор, що лежить у площині, при цьому перейде в вектор, що лежить у площині, з тими ж координатами щодо репера, які вектор і мав щодо репера. Звідси випливає, що й усяка точка М площини перейде в точку М площини , що має щодо репера , ті самі координати, які точка М мала в площині щодо репера . Іншими місцем Теорема 4. Нехай при афінному перетворенні простору площину я переходить у площину . Тоді перетворення А відображає довільний репер площини на деякий репер оаплоскості і ставить у відповідність кожній точці М площині точку М площині , що має відносно репера , ті координати, які точка М щодо репера . Іншими словами: перетворення А породжує афінне відображення площини на площину.

Перетворення на площині та у просторі

У комп'ютерній графіці все що стосується плоского випадку прийнято позначати 2D (2-dimentional) двовимірне, а що стосується просторових – 3D.

Афінні перетворення на площині

Affinis - споріднений (лат). Тому що фігури зберігаються при афінних перетвореннях.

Припустимо, існує деяка прямолінійна система координат (OXY). Тоді, кожній точці М можна поставити у відповідність пару координат (x, y). Ввівши іншу систему координат O * X * Y * можна поставити тій же точці М іншу пару координат (x * , y *). Перехід від однієї системи до іншої:

x * =ax+by+c, з умовою |a b|¹0

y * = dx + ey + f | d e |

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


Слід зазначити, що координати точки M можна як вектора з початку координат з координатами Mx,My.

Тоді перетворення можна записати у векторній формі (це справедливо лише для прямокутної системи координат).

M*=((M-O*)X*,(M-O*)Y*)

Де O*-координати початку координат другої системи координат першої. X*,Y* - орти (напрямні вектора) другої системи координат у координатах першої.

a = (Xx *), b = (Xy *), c = -O * X *

d = (Yx *), e = (Yy *), f = -O * Y *

Це перетворення можна записати і в матричному вигляді

, або , де вектори вважаються у вигляді матриць виду 12.

Елемент Cij матриці C=AB є сума добутків елементів i-го рядка матриці A на елементи j-ого стовпця матриці B.

Зворотне перетворення – рішення системи лінійних рівнянь, або використовувати зворотну матрицю але для випадку, коли система представлена ​​ортами можна простіше. У цьому випадку зворотна матриця дорівнює транспонованої.

Афінне перетворення – геометричне перетворення площини чи простору ĸᴏᴛᴏᴩᴏᴇ можна отримати комбінуючи поворот, перенесення, дзеркальні відображення та масштабування в напрямках координатних осей.

Поворот (R – rotation). Навколо початку координат на кут a.

x * = x * cosa-y * sina

y * =x*sina+y*cosa

Розтягування, стиск уздовж координатних осей (D – dilatation).

Відображення (M – mirror). Щодо осі абсцис.

Перенесення (T – translation).

Перенесення у вигляді творів вектора на матрицю не можна, зате можна як суми векторів.

У курсі аналітичної геометрії доводиться, що будь-яке перетворення можна як послідовне виконання (суперпозицію) цих найпростіших перетворень.

Іноді зручно представляти всі перетворення в одній матричній формі, для цього використовують однорідні координати.

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

Для точки M з координатами x,y на площині однорідними координатами є трійка чисел x1,x2,x3, одночасно нерівна нулю і пов'язана співвідношеннями x1/x3=x, x2/x3=y. Точці з координатами x, y на площині зіставляється точка xh, y, h, h в однорідному просторі, зазвичай h = 1 (x, y, 1).

Загальне перетворення точок у однорідних координатах можна записати як.

А матриці базових перетворень виглядатимуть так:

Комбінація перетворень.

Припустимо, потрібно повернути точку на кут навколо деякої точки A.

Початки переносимо точку A на початок координат (-Ax,-Ay). Далі – поворот. Далі перенесення назад у точку А. (Ax, Ay). Можна отримати єдине перетворення

Афінні перетворення у просторі

У 3D просторі точка (вектор) представляється трьома координатами (x, y, z), або чотирма однорідними координатами (x, y, z, 1).

Слід запровадити поняття ліва та права трійка векторів. Три вектори a,b,c утворюють праву трійку, якщо після поєднання почав векторів найкоротший поворот від a до b здається спостерігачеві, що дивиться з кінця вектора c ідуть проти годинникової стрілки. Правило правої руки – вектор a поєднується з ліктем, вектор b входить у долоню, вектор c збігається з великим пальцем. Система координат прийнято називати правою, якщо її напрямні вектора утворюють праву трійку.

Векторний твір c=a'b, с – вектор перпендикулярний до обох векторів, утворює з ними праву трійку.

Cx=Ay*Bz-Az*By, Cy=Az*Bx-Ax*Bz, C z = Ax * By - Ay * Bx

Перетворення залишаються ті ж: обертання (тільки тепер навколо трьох осей), розтягнення, відображення (щодо трьох площин), перенесення.

Обертання проти годинникової, якщо дивитися з початку координат для лівої системи координат (для правої – навпаки).

, ,

,

, ,

Наприклад, необхідно побудувати матрицю обертання щодо прямої з напрямним ортом L, що проходить через точку A.

1. Перенесення A на початок координат

2. Поєднання прямої з віссю X.

Спочатку поворот навколо осі X

на кут a, cosa=Lz/d, sina=Lx/d, де d=

Якщо d=0, значить пряма вже збігається з віссю X.

Потім поворот навколо осі Y на кут b.

Повернутий вектор дорівнює (Lx, Ly, Lz, 1) = (Lx, 0, d, 1).

cosb = Lx, sinb = d

3. Поворот навколо осі X на потрібний кут

4. Повернення до осі L ,

5. Перенесення на точку A

Загальна матриці вийде

Перетворення на систему координат задану ортами

Якщо система задана трійкою взаємно перпендикулярних ортів X *, Y *, Z *.

, зворотне перетворення - транспонована матриця [R] T

Проектування

Проектування вкрай важливо насамперед, щоб відобразити тривимірні об'єкти на плоскому екрані, але є й інші застосування, наприклад, тіні.

Існує два найбільш уживані види проектування паралельне та центральне (перспективне).

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

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

Паралельні проекції можна розділити на два типи, коли прямі пучки перпендикулярні до площини проектування – проекції називають аксонометричними, а коли ні, косокутними (такі проекції ми розглядати не будемо).

Τᴀᴋᴎᴎᴩᴀᴈᴈᴍ, щоб отримати аксонометрическую паралельну проекцію об'єкта на екрані потрібно поєднати напрямок пучка з однією з осею (зазвичай це Z). Осі X і Y збігатимуться з осями X, Y на екрані, а вісь Z – буде спрямована вглиб екрану.

Щоб отримати перспективну проекцію точки вкрай важливо помістити точку сходу пучка на початок координат, напрямок на екран (перпендикуляр з точки сходу до площини проектування) поєднати з віссю Z, тоді Xp=X*d/Z, Yp=Y*d/Z, де d – відстань від початку координат до площини проектування.

Це перетворення можна записати як матриці. ,

Єдине, що в такому перетворенні втрачається глибина (z), але можна її обчислити з останньої координати вектора.

Крім цих перетворень проектування дуже важливо зробити ще кілька, щоб зображення правильно виглядало на екрані. У першу чергу, його потрібно розтягнути до розмірів вікна, по-друге, його потрібно дзеркально відобразити навколо осі Х (бо вісь Y зазвичай спрямована вниз), по-третє, його потрібно перенести в центр вікна.

Загальна матриця перетворення виглядає так.

Cx, Cy – координати центру дисплея.

ratio – відношення розміру Y до розміру X, для різних дозволів екрана різний. Дозвіл – кількість точок на одиницю поверхні, у разі одиниця – весь екран монітора. Екран монітора має співвідношення горизонтального розміру до вертикального 4/3, у зв'язку з цим для дозволів з кількістю точок по горизонталі і кратним вертикалі цьому числу ratio=1 (наприклад 640/480). Інакше ratio = (4 * sizey) / (3 * sizex) (320x200 = 0.83).

S – масштабний коефіцієнт, для паралельної проекції вибирається вручну, для перспективної проекції S дорівнює одиниці, але розраховується d (відстань до площині проектування) з поля зору FOV (field of view). FOV – максимальний кут, який утворюють прямі у пучку, кут зору.

FOV зазвичай варіюється від 50 ° до 100 °, FOV людського ока - 90 °.

Світова, модельна та екранна системи координат

Світова – основна система координат, у якій задані всі об'єкти сцени.

Модельна система координат, в якій задана внутрішня структура об'єктів.

Екранна - Система координат спостерігача, ще її називають системою координат камери.

Модель зазвичай розташовують у модельній системі таким чином, що центр системи збігається або з геометричним або з центром мас моделі, вісь X збігається з напрямком вперед, вісь Y - вправо, вісь Z - вгору.

Модель задається у світовій системі координат координатами центру моделі M (вектор) та орієнтацією (або трьома ортами, або трьома кутами крен (X), тангаж (Y), курс (Z), матриця при цьому формується як послідовність поворотів). Для перетворення з модельних координат потрібно спочатку повернути відповідно до матриці орієнтації, а потім перенести на .

Курс Крен Тангаж

Положення та орієнтацію камери можна встановити точно аналогічно тому, як і положення моделі. Але часто, достатньо лише напрями зору камери. Зазвичай (у реальному житті) камера немає крену, тобто. вісь X (вправо) завжди горизонтальна, а площина YZ отже завжди вертикальна.

Τᴀᴎᴎᴎᴩᴀᴈᴏᴍ, якщо припустити, що вісь Z камери (напрямок зору) не вертикальна, то можна знайти вісь X=Norm(Z´Up), де Up(0,0,1) вертикальний вектор (X вийде перпендику , А значить горизонтальний). Нарешті вісь Y = X'Z (вгору). Слідкуйте за тим, щоб система залишалася лівою.

Щоб перетворити точки зі світової системи на екранні вкрай важливо спочатку застосувати перенесення, а потім повернути на транспоновану матрицю орієнтації камери T.

Для того, щоб перевести точку з модельних координат в екранні вкрай важливо зробити наступне перетворення T . Після таких перетворень вісь Z буде спрямована вздовж напрямку зору і можна проводити проектування.

Лекція 6-7-8

Перетворення на площині та у просторі - поняття та види. Класифікація та особливості категорії "Перетворення на площині та у просторі" 2017, 2018.

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

Визначення.Перетворення площини називається афінним(від англ . affinity - Спорідненість), якщо

  • воно взаємно однозначне;
  • Таким чином, будь-яка пряма є пряма.

Перетворення називається взаємно однозначним, якщо

  • різні точки переходять у різні;
  • у кожну точку переходить якась точка.

Властивості афінного перетворення у тривимірному просторі:

  • відображає n-вимірний об'єкт у n-вимірний: точку в точку, лінію в лінію, поверхню в поверхню;
  • зберігає паралельність ліній та площин;
  • зберігає пропорції паралельних об'єктів – довжин відрізків на паралельних прямих та площ на паралельних площинах.

Будь-яке афінне перетворення задається матрицею 3x 3 з ненульовим визначником та вектором переносу:

Подивимося це з погляду математики. R є матрицею лінійного оператора над простором тривимірних векторів. Вектор T потрібен для здійснення паралельного перенесення: якщо помножити (000) на будь-яку матрицю 3x 3, знову отримаємо (000) – початок системи координат щодо перетворення R є нерухомою точкою. Вимога, щоб визначник був ненульовим, диктується ухвалою. Власне, якщо визначник матриці R дорівнює нулю, весь простір перетворюється на площину, пряму чи точку. Тим самим не дотримується взаємна однозначність.

На практиці зручно задавати афінне перетворення однією матрицею. При цьому використовуються однорідні координати, введені у попередній статті. Афінне перетворення задаватиметься наступною матрицею 4x 4:

Зауважимо, що перші три значення останнього рядка дорівнюють 0. Це необхідне умовате, що перетворення буде афінним. У випадку довільна матриця розміру 4x 4 задає проективне перетворення. Такі перетворення, як можна здогадатися із назви, використовуються для проектування тривимірної сцени. Докладніше про це буде розказано в одній із наступних статей.

Розглянемо окремі випадки афінних перетворень.

Прим.Тут і надалі використовуватиметься система координат, введена таким чином:

  • система координат права;
  • вісь z спрямована на спостерігача, перпендикулярно площині екрана;
  • вісь y знаходиться у площині екрану і спрямована вгору;
  • вісь x знаходиться у площині екрана і спрямована праворуч.

Докладніше ми зупинимося на цьому при розгляді геометричного конвеєра.

Матриця цього перетворення виглядає так:

У разі матриця R = E , одиничної матриці.

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

Поворот (обертання)



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

Прим.Поворот навколо довільного вектора не дорівнюєповорот навколо довільної спрямованої прямої.



Зауважимо, що при повороті навколо осі y ординати точок (у координати) не змінюються. Також варто зазначити, що координати x і z точки перетворюються незалежно від y координати. Це означає, що будь-яка точка p (x, y, z) перейде в точку p '(x'(x, z), y, z'(x, y)). Тепер залишилося зрозуміти, як перетворюються координати x і z : у площині Oxz це буде поворот навколо початку координат за годинниковою стрілкою (бо x z y - ліва трійка), тобто. у негативному напрямку. Матриця такого перетворення відома (див. Поворот площини):



Матриця перетворення R y (φ y ):

Поворот навколо осей x та z



Аналогічними міркуваннями можна отримати матриці поворотів R x (φ x) і R z (φ z) навколо осей x і z відповідно.

Наведемо остаточні результати:

Неважко помітити, що визначники матриць R x , R y R z рівні 1 . Також матриці обертань R rot мають властивість ортогональності: R T R = RR T = E . З цього, своєю чергою, випливає корисна властивість, що звернення матриці повороту можна замінити транспонуванням: R -1 (φ ) = R T (φ ) .

Масштабування (стиснення/розтягування, відображення)



Коефіцієнти стиснення/розтягування, за аналогією з двовимірним простором, визначаються діагональними членами матриці R :

Результат:



Комбінація коефіцієнтів s x = -1, s y = 1, s z = 1 задаватиме відображення від площини Oyz (x = 0). При s x = s y = s z = -1 отримаємо центральну симетрію щодо початку координат.

Інтерпретація матриці R

Розглянемо, що є матриця R з погляду лінійної алгебри. Виявляється, що матриця R містить базис нової системи координат.

Справді, матриця

(R 11 R 12 R 13 )

(R 21 R 22 R 33)

(R 31 R 32 R 33)

перекладає вектор декартового базису:

(100) → (R 11 R 21 R 31 )

(010) → (R 12 R 22 R 32 )

(001) → (R 13 R 23 R 33 )



Тепер неважко отримати перетворення скосу. Наприклад:

Прим.Якщо дотримуватися загальноприйнятої термінології, наведене вище перетворення називається зрушенням. Зсувом (shear)буде будь-яке перетворення, головна діагональ матриці R якого поодинока. Якщо при цьому визначник матриці R дорівнює нулю, перетворення не є афінним.

Складні афінні перетворення

Складні афінні перетворення можна одержати як комбінацію простих (елементарних) перетворень. При цьому вибирати прості афінні перетворення можна по-різному. Наприклад, поворот можна представити як комбінацію масштабування та зсуву. Тим не менш, для зручності поворот також вважається елементарним перетворенням. Поворот навколо довільного вектора подається як комбінація поворотів навколо координатних осей. Про це буде детально розказано у статті.

5. ГЕОМЕТРИЧНІ ПЕРЕТВОРЕННЯ

Виведення зображення на екран дисплея та різноманітні дії з ним, у тому числі візуальний аналіз, вимагають від користувача відомої геометричної грамотності. Геометричні поняття, формули та факти, що належать передусім до плоского та тривимірного випадків, відіграють у завданнях комп'ютерної графіки особливу роль. Геометричні міркування, підходи та ідеї у поєднанні з можливостями обчислювальної техніки, що постійно розширюються, є невичерпним джерелом істотних поступів на шляху розвитку комп'ютерної графіки, її ефективного використання в наукових та інших дослідженнях. Деколи навіть найпростіші геометричні методики забезпечують помітні поступи на окремих етапах вирішення великого графічного завдання.

5.1. Перетворення на площині та у просторі

Для вирішення таких завдань, як рух об'єктів та їх частин, управління камерою застосовуються афінні перетворення(АП), розглянемо їх основні властивості:

1) точки, що лежать на одній прямій, після перетворення лежать на одній прямій;

2) прямі, що перетинаються, залишаються такими, що перетинаються, а паралельні – паралельними;

3) при АП простору площини, що перетинаються, залишаються перетинаються, паралельні - паралельними, а схрещуються - схрещуються;

4) при АП зберігаються відношення площ двох квадратів на площині та відношення обсягів двох кубів у просторі.

Афінні перетворення на площині

Допустимо, на площині задана прямолінійна координатна система. Тоді кожній точці М відповідає впорядкована пара чисел (х, у) її координат (рис. 5.1). Вводячи на площині ще одну прямолінійну систему координат, ми ставимо у відповідність тій же точці іншу пару чисел - (х *, у *).

Перехід від однієї прямолінійної координатної системи на площині до іншої описується такими співвідношеннями:

x* = α x+ β y+ λ ,

y* = γ x+ δ y+ µ ,

де α, β, λ, γ, µ, δ – довільні числа, пов'язані нерівністю

α β ≠ 0.

γ δ

Формули (1) можна розглядати двояко: або зберігається точка та змінюється координатна система (рис. 5.2) (у цьому випадку довільна точка М залишається тією ж, змінюються лише її координати), або змінюється точка та зберігається координатна система (рис. 5.3) ( у цьому випадку формули (1) задають відображення, що переводить довільну точку M (x, y) в точку М * (х *, у *), координати якої визначені в тій самій координатній системі).

Рис. 5.1. Вихідні

Рис. 5.2. Перетворення-

Рис. 5.3. Перетворення-

ня системи координат

ня точки

У надалі ми розглядатимемо формули (1) як правило, згідно з яким у заданій системі прямолінійних координат перетворюються точки площини.

У Афінні перетворення площини особливу роль відіграють кілька важливих окремих випадків, що мають добре простежувані геометричні характеристики. При дослідженні геометричного значення числових коефіцієнтів у формулах (1) для цих випадків зручно вважати, що задана система координат є прямокутною декартовою.

1. Поворот навколо початкової точки на кутописується формулами

x * = x cosϕ − y sinϕ ,

y * = x sinϕ + y cosϕ.

2. Розтягування (стиснення) уздовж координатних осей можна задати так:

x * = α x ,y * = δ y ,α > 0,δ > 0.

Розтягування вздовж осі абсцис забезпечується за умови, що α > 1, а стиск – при 0<α < 1.

3. Відображення (щодо осі абсцис) задається за допомогою

x * = x, y * = - y.

4. Паралельне перенесення забезпечують співвідношення

x* = x+ λ , y* = y+ µ .

Вибір цих чотирьох окремих випадків визначається двома обставинами.

1. Кожне з наведених перетворень має простий і наочний геометричний зміст (геометричним змістом наділені і постійні числа, що входять у наведені формули).

2. Як доводиться в курсі аналітичної геометрії, будь-яке перетворення виду (1) завжди можна представити як по-

слідче виконання найпростіших перетворень. Для ефективного використання цих відомих формул у за-

дачах комп'ютерної графіки зручнішою є їх матричний запис. Матриці, відповідні випадкам А, Б і В, будуються легко і мають наступний вигляд:

cosϕ

sinϕ

− sinϕ

cosϕ

−1

Однак для вирішення завдань, що розглядаються далі, дуже бажано охопити матричним підходом всі чотири найпростіші перетворення (у тому числі і перенесення), а значить, і загальне афінне перетворення. Цього можна досягти, наприклад, так: перейти до опису довільної точки площини, не впорядкованої парою чисел, як це було зроблено вище, а впорядкованої трійкою чисел.

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

Нехай М - довільна точка площини з координатами іу, обчисленими щодо заданої прямолінійної координатної системи. Однорідними координатами цієї точки називається будь-яка трійка одночасно нерівних нулю чисел x 1 x 2 x 3 пов'язаних із заданими числами x і y наступними співвідношеннями:

x 1 / x 3 = x, x 2 / x 3 = y.

При розв'язанні задач комп'ютерної графіки однорідні координати зазвичай вводяться так: довільній точці М (х, у) площині ставиться у відповідність точка М * (х, у, 1) у просторі (рис. 5.4).

Зауважимо, що довільна точка на прямій, що з'єднує початок координат, точку O (0, 0, 0) з точкою M * (х, у, 1), може бути задана трійкою чисел виду (hx, hy, h).

Рис. 5.4. Однорідні координати

Вважатимемо, що h ≠ 0. Вектор з координатами hx,hy,h є напрямним вектором прямої, що з'єднує точки 0(0, 0, 0) іМ*(х,у,1). Ця пряма перетинає площину z = 1 у точці (х, у, 1), яка однозначно визначає точку (х, у) координатної площині.

Тим самим між довільною точкою з координатами (х, у) і безліччю трійок чисел виду (hx, hy, h) при h ≠ 0 встановлюється (взаємно однозначне) відповідність, що дозволяє вважати числа hx, hy, h новими координатами цієї точки.

У проективній геометрії для однорідних координат прийнято наступне позначення: x :у : 1 або x 1 : x 2 : x 3 (числа x 1 x 2 x 3 одночасно в нуль не зверталися).

Застосування однорідних координат виявляється зручним при вирішенні найпростіших завдань, наприклад, масштабування:

1) точку з однорідними координатами (0.5; 0.1; 2.5) h=1 не можна уявити цілими координатами, але, наприклад, при виборі h= 10 отримуємо (5; 1; 25);

2) щоб результати перетворення не призводили до арифметичного переповнення, для точки з координатами

(80000; 40000; 1000) можна взяти, наприклад, h = 0,001. У ре-

зультат отримаємо (80; 40; 1).

Наведені приклади показують корисність використання однорідних координат під час проведення розрахунків. Однак основною метою введення однорідних координат у комп'ютерній графіці є їх безперечна зручність у застосуванні до геометричних перетворень.

За допомогою трійок однорідних координат та матриць третього порядку можна описати будь-яке афінне перетворення площини.

Насправді, вважаючи h = 1, порівняємо два записи: позначений символом * і наступний, матричний:

(x * y * 1) = (x y 1)

Неважко помітити, що після перемноження виразів, що стоять у правій частині останнього співвідношення, ми отримаємо обидві формули (1) і правильну числову рівність 1 ≡ 1. Тим самим порівнювані записи вважатимуться рівносильними.

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

На кожному етапі знаходять матрицю, відповідну тому чи іншому з виділених вище випадків А, Б, В або Г, що мають добре виражені геометричні властивості.

Випишемо відповідні матриці третього порядку.

А. Матриця обертання (rotation)

Б. Матриця розтягування

cosϕ

sinϕ

(стиснення) (dilatation)

cosϕ

= − sinϕ

Г. Матриця перенесення (translation)

В. Матриця відображення (re-

− 1 0 .

Розглянемо приклади афінних перетворень площини.

Приклад 1. Побудувати матрицю повороту

довкола точки А(a, b) на кут ϕ (рис. 5.5).

А (-а,

поєднання центру

повороту

координат.

2 крок. Поворот на куті.

A(a,

Рис. 5.5. Поворот

повернення центру повороту до попереднього положення; матриця відповідного перетворення.

cosϕ

sinϕ

= − sinϕ

cosϕ

−A

−a

−b

Перемножимо матриці у тому порядку, як вони виписані: . В результаті отримаємо, що шукане перетворення (у матричному записі) буде виглядати так:

sinϕ

sinϕ

(x * y * 1) = (x y 1) ×

− sinϕ

cosϕ

− a cosϕ + b sinϕ + a

− a sinϕ − b cosϕ + b

Елементи отриманої матриці (особливо в останньому рядку) не так легко запам'ятати. У той же час кожна з трьох матриць, що перемножуються, за геометричним описом відповідного відображення легко будується.

Приклад 2. Побудувати матрицю розтягування з коефіцієнтами розтягування вздовж осі абсцис і вздовж осі ординат і з центром в точці А(а, b).

1-й крок. Перенесення на вектор А (-а, -b) для поєднання центру розтягування з початком координат.

2 крок. Розтягнення вздовж координатних осей з коефіцієнтами іβ відповідно.

3 крок. Перенесення на вектор (а, b) для повернення центру розтягування в колишнє положення; матриця відповідного перетворення.