Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Матриця перспективного перетворення виділяє зі світового простору усічений конус, потім проектує (уписує) його в одиничний куб


Кроки:

1. Перехід від системи координат об'єкта до системи координат спостерігача (відбиття щодо площини Z=0).

Матриця має вигляд:

1 0 0 0
0 1 0 0
0 0 -1 0
0 0 0 1

Наприклад:

P(0,0,1,1) *     1 0 0 0 = P(0,0,-1,1)    
0 1 0 0
0 0 -1 0
0 0 0 1
До перетворення Після перетворення

Зауваження: Матриця може бути сформована викликом функції glScalef(1,1,-1)

2. Перенос центра проекції в початок координат.

Зауваження: 3 нижніх елементи – зрушення (переміщення) по осях x,y,z.

Зауваження: Матриця може бути сформована викликом функції glTranslatef(0,0,-zc).

3. Перспективне перетворення.

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

Для випадку центральної однокрапкової проекції, коли проектування здійснюється уздовж осі Z закон проектування задається елементом матриці, розташованим у третьому рядку/четвертому стовпці.

Зауваження: 3 вертикальних правих елементи є коефіцієнтами перспективного перетворення по кожній із трьох осей. Для однокрапкової центральної проекції ненульовим є коефіцієнт тільки по одній з осей.

У загальному випадку координати вершини після перетворення будуть мати вигляд:

P(x,y,z) => Р’(x/(rz+1), y/(rz+1), z/(rz+1)),

де r = 1/(-zc).

Перетворення координат при перспективному перетворенні приводить до того, що всі вершини, що мали z координату в інтервалі від 0 до far, після перспективного перетворення будуть мати координату z, що лежить в інтервалі від 0 до -zc.

 

P(0,0,3,1) *     1 0 0 0 =P(0,0,3,2)? (0,0,1.5,1)    
0 1 0 0
0 0 1 -1/zc
0 0 0 1

 

P(0,0,100,1) *     1 0 0 0 =P(0,0,1000,1003/3)» (0,0,2.99,1)    
0 1 0 0
0 0 1 -1/zc
0 0 0 1

 
 
С

 


Зауваження: Матриця формується у вигляді одномірного масиву, записаного по стовпцях (спочатку – елементи першого стовпця, потім другого й т.д.), і множиться на поточною функцією glMultMatrixf(< адреса масиву >).

4. Сполучення центра отриманого паралелепіпеда із центром одиничного куба (канонічного обсягу).

 
 

 

 


zfar = (far-near)/((far-near)*r+1);

?z = - zfar/2.

Зауваження: Матриця може бути сформована викликом функції glTranslatef(0,0, ∆z).

5. Сполучення кутових і лінійних координат (масштабів).

Матриця має вигляд:

 

 
 

 

 


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

Sx = 2*arctg(r)/ αx;

Sy = 2*arctg(r)/ αy;

Sz = 2*((far-near)*r+1)/(far-near).

Зауваження: Матриця може бути сформована викликом функції glScalef(Sx, Sy, Sz).

Результуюча матриця має вигляд:

Мотр* Мт* Мпп* Мткан* Ммасш

де

Мотр - матриця відбиття;

Мт - матриця трансформації;

Мпп - матриця перспективного перетворення;

Мткан - матриця трансформації для сполучення початку із центром канонічного обсягу;

Ммасш - матриця масштабування.

Перемножування координат вершини на результуючу матрицю має вигляд:

Р(x,y,z,1)*Mвидовая*Mпроецирования

Зауваження: В OpenGL для спрощення формування матриць відстань від центра проекції до картинної площини завжди приймається рівним одиниці.

Завдання:

У ході виконання роботи необхідно самостійно сформувати матрицю перспективної проекції для випадку центральної однокрапкової проекції. Проектування здійснюється уздовж осі z, центр проекції C розташовується на продовженні осі z, ближня (near) і далека (far) площини, що відтинають, перпендикулярні осі z.

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

На останньому етапі - при масштабуванні, - передбачається що об'єкти в площині проекції відображаються в натуральну величину.

C Near Far αx = αy
  (0,0,-3)      
  (0,0,-4)      
  (0,0,-5)      
  (0,0,-6)      
  (0,0,-7)      
  (0,0,-8)      
  (0,0,-3)      
  (0,0,-4)      
  (0,0,-5)      
  (0,0,-6)      
  (0,0,-7)      
  (0,0,-8)      

де αx – кут огляду в горизонтальній і вертикальній площинах.

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

За наступні друга година необхідно:

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

- сформувати матрицю самостійно, і завантажити її в конвеєр використовуючи функцію glLoadMatrix. Варто врахувати, що матриця розташовується в пам'яті "по стовпцях", а не "по рядках".

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

Зауваження: Матриця видового перетворення встановлюється як одинична.

Контрольні питання:

1. Які системи координат використовуються?

2. Які параметри для формування матриці перспективної проекції повинні бути відомі?

3. Які три матриці доступні в класичному графічному конвеєрі?

4. Як формуються результуючі координати вершини зі світових (розповісти порядок множення координат вершини на матриці трансформацій)?

5. Назвіть етапи формування матриці перспективної проекції.

6. Які елементи матриці відповідають за відбиття щодо площини, що проходить через початок координат, якою функцією можна виконати відбиття?

7. Які елементи матриці відповідають за переміщення уздовж осей, якою функцією можна виконати переміщення?

8. У чому суть перспективного перетворення?

9. Які елементи матриці відповідають за перспективне перетворення?

10. Які елементи матриці відповідають за приватні масштаби по осях, за загальний масштаб, якою функцією можна виконати масштабування об'єкта уздовж кожної з осей?

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

12. За допомогою якої функції здійснюється ініціалізація поточної матриці одиничної?

13. За допомогою якої функції здійснюється завантаження сформованої матриці в конвеєр, які параметри приймає функція?

14. За допомогою якої функції здійснюється множення поточної матриці на сформовану, які параметри приймає функція?

Література:

1. П.В. Вельтмандер "Машинна графіка. Навчальний посібник у 3-х книгах". http://ermak.cs.nstu.ru/kg_rivs/home.htm.

2. В.Е. Зуєв, М.В. Кабанів Перенос оптичних сигналів у земній атмосфері (в умовах перешкод), - М.: "Сов. радіо", 1977, - 368 с.

3. В.А. Гаврилов Видимість в атмосфері. Л., 1966, - 322с.

4. Г.Ш. Лівшиць Розсіяне світло денного неба. – Алма-Ата: Наука, 1973.

5. В.Е. Зуєв Проблеми оптики атмосфери. – Новосибірськ 1983.

 

<== предыдущая лекция | следующая лекция ==>
Структурные преобразования в системах автоматического управления» | Общие сведения о подпрограммах
Поделиться с друзьями:


Дата добавления: 2015-05-10; Просмотров: 319; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.095 сек.