Computer Grapnics Algorithms Clipping

2,140 views

Published on

компютърна графика отстраняване невидими линии повърхнини

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,140
On SlideShare
0
From Embeds
0
Number of Embeds
162
Actions
Shares
0
Downloads
75
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Computer Grapnics Algorithms Clipping

  1. 1. Алгоритми за отделяне и скриване на невидими линии и повърхнини Доц. М. Иванова Технически университет – София
  2. 2. Алгоритми за отделяне и скриване на невидими линии и повърхнини • Постановка на задачата – Дадени са геометричните модели на обекти в моделно пространство – Използва се дясно ориентирана координатна система – В равнината XY се разполага проекционната равнина – Посоката на наблюдение съвпада с отрицателната посока на оста OZ, гледната точка се намира в положителната безкрайна точка на оста OZ – Тримерната сцена се намира между гледната точка и проекционната равнина – Използва се паралелна проекция при създаване на изображението на сцената
  3. 3. Постановка на задачата X Y Z O
  4. 4. Алгоритми за отделяне и скриване на невидими линии и повърхнини • Алгоритмите се разделят по определени признаци: – Според средата от данни, в която работят: • Алгоритми, работещи с елементите от сцената в моделното пространство • Алгоритми, работещи в пространството на наблюдателя • Алгоритми от смесен тип, при различните стъпки се работи в различни пространства
  5. 5. Алгоритми за отделяне и скриване на невидими линии и повърхнини – Според точността: • Точни – работят с предварително зададена точност • Апроксимационни – точността зависи от растерното устройство – Според дефиниционната област: • Алгоритми, работещи с изпъкнали многоъгълници • Алгоритми, работещи с тела с криволинейни стени
  6. 6. Алгоритъм за скриване на задни стени • Алгоритъмът се използва само за единични тела, обградени с плоски стени, представляващи изпъкнали многоъгълници (изпъкнали многостени) • Работи в моделното пространство • Чрез него не могат да се решат до край въпросите за скриване на невидимите стени и ръбове при наличие на закриващи се обекти
  7. 7. Алгоритъм за скриване на задни стени • Аx+By+Cz+D=0 – уравнение на равнините, в които лежат стените на един обект • По знака на коефициента С може да се определи дали дадена страна се закрива или не от обекта, към който принадлежи
  8. 8. Алгоритъм за скриване на задни стени • Постановка на алгоритъма: – Аx+By+Cz+D=0 – уравнение на равнина в тримерното пространство – Разполагаме с дясно ориентирана координатна система – В равнината лежи стена на изпъкнал многостен – Вътрешна страна - страната на равнината, гледаща към вътрешността на обекта – Видима/външна страна – обратната на вътрешната - посоката на нормалата е от вътрешната към външната страна
  9. 9. Алгоритъм за скриване на задни стени • Коефициентите A, B, C и D се изчисляват от: Ax By Cz D x - x y - y z - z 1 1 1 x - x y - y z - z 2 1 2 1 2 1 x x y y z z = + + + - - - 3 1 3 1 3 1 • Точките (x1,y1,z1), (x2,y2,z2) и (x3,y3,z3) от равнината са избрани в посока, обратна на въртене на часовниковата стрелка, гледана от външната страна на равнината
  10. 10. Алгоритъм за скриване на задни стени • Тогава за всяка точка с координати (x’,y’,z’) от вътрешната страна на една равнина е изпълнено неравенството: Ax’+By’+Cz’+D<0 •  точката е или вътре в многостена или многостенът се намира между нея и разглежданата стена – стената ще бъде невидима • Ако Ax’+By’+Cz’+D>0 – стената е видима
  11. 11. Алгоритъм за скриване на задни стени • По условие: – гледната точка се намира върху положителната посока на оста OZ – посоката на гледане съвпада с отрицателната посока на оста OZ • Тогава нормалният вектор N (A,B,C) ще има компонента С, паралелна на посоката на гледане • Ако C<0 – невидима стена N=(A,B,C) Посока на гледане x z y
  12. 12. Алгоритъм за скриване на задни стени • Ако коефициентите на уравненията на стените не са получени чрез изчисления на координатите на три върха, то се прави предварителен тест с вътрешна точка (x0,y0,z0) • Ако A’x0+B’y0+C’z0+D’>0 , то коефициентите A’, B’, C’, D’ трябва да се умножат с -1, преди проверката на знака на С’
  13. 13. Алгоритъм за скриване на задни стени • Чрез този алгоритъм не могат да се отстранят всички невидими стени • Използват се по-сложни алгоритми – Алгоритъм на Галимберти и Монтанари – Алгоритъм на Робертс – Алгоритъм на Z-буфера – Алгоритъм на Нюел и Санча
  14. 14. Алгоритъм на Галимберти и Монтанари • Точен алгоритъм, работещ в моделното пространство • Алгоритъм от векторен тип, приложим при скриване на ръбовете на тримерни обекти с плоски изпъкнали многоъгълни стени  Използва се при създаване на векторни изображения z y E x F
  15. 15. Алгоритъм на Галимберти и Монтанари • Всеки ръб Е от един обект се съпоставя с всяка стена F от друг обект  търси се един от случаите: 1. Ръбът Е е видим – Е се намира в полупространството на наблюдателя и ограничено от равнината на F 2. Ръбът Е е частично или напълно закрит от равнината на F  изследване взаимното разположение на проекциите E’ и F’ в картинната равнина z 3. Е попада в двете полупространства, разделени от равнината на F  разглеждат се предните два случая y x E F z y x E F
  16. 16. Алгоритъм на Галимберти и Монтанари • Цикълът на тестване приключва: – При изчерпване на стените {F} – При установяване пълната невидимост на ръба E визуализират се само видимите части на Е, ако има такива Времето за работа на алгоритъма е функция на квадрата на броя на стените на всички обекти
  17. 17. Алгоритъм на Робертс • Съчетава и доразвива идеите на предните два алгоритъма • Невидимите линии се скриват при визуализиране
  18. 18. Алгоритъм на Робертс • Алгоритъмът работи с изпъкнали многостени • Неизпъкналите многостени се представят чрез изпъкнали многостени • Състои се от три части 1. Всеки обект отделно се тества за скрити линии и повърхнини 2. Останалите видими ръбове се тестват спрямо другите обекти 3. Конструират се допълнителни ръбове, получени при взаимното припокриване на обектите
  19. 19. Алгоритъм на Z-буфера • Алгоритъм за скриване на невидими повърхнини при работа с растерни устройства • Работи във визуализационната повърхност (кадровия буфер) • Използва се Z-буфер , съдържащ информация за координатите на точките по оста OZ • Аx+By+Cz+D=0 – уравнение на равнината на стената • В точката (x,y), дълбочината е: z = - D - A . x 0 - B . y0 0 • В съседната точка, дълбочината е: C z y x Визуализационна повърхност Z – буфер, съхранява дълбочината z z = - D - A .( x 0 +1) - B . y0 1 C z = z - A 1 0 C x0 x1 y0 y1 z = z + B 1 0 C
  20. 20. Алгоритъм на Нюел и Санча • Сортира стените-многоъгълници по дълбочина • Проекциите на стените се извеждат върху екрана в определен ред, в зависимост от близостта им до наблюдателя • Най-напред се извеждат върху екрана проекциите на най-отдалечените стени • Най-близките стени ще закрият далечните, тъй като ще бъдат записани в буфера за регенерация върху тях • Създават се изображения само върху растерни дисплеи
  21. 21. Алгоритъм на Нюел и Санча z y x 1 1 2 2 3 3 4 4 5 5
  22. 22. Алгоритъм на Нюел и Санча • Три стъпки на алгоритъма: – Подреждане на стените в списък в зависимост от най- голямата координата Zmax – Разрешаване на неопределеностите, възникнали при припокриване на z обвивките на стените – Преобразуване на проекциите на стените в растерна форма в ред на увеличаване на максималните им координати Zmax
  23. 23. Алгоритъм на Нюел и Санча • Детайлизиране на втората стъпка • Извършване на проверки при припокриване на z обвивките на стените P и Q: • Тест 1: Припокриват ли се x обвивките на P и Q? – Не – проекциите на стените не се припокриват – редът им на извеждане върху екрана е без значение – Да - P и Q имат общи точки – прави се втори тест P Q
  24. 24. Алгоритъм на Нюел и Санча • Тест 2: Припокриват ли се y обвивките на P и Q? – Не – проекциите на стените не се припокриват – редът им на извеждане върху екрана е без значение – Да - P и Q имат общи точки – прави се трети тест • Тест 3: Проверява се дали Р лежи изцяло в пространството, ограничено от равнината на Q, което не съдържа наблюдателя – Да – Q може да закрива Р и Р трябва да остане на мястото си в списъка – преди Q, за да се визуализира преди Q – Не – прави се четвърти тест
  25. 25. Алгоритъм на Нюел и Санча • Тест 4: Проверява се дали Q лежи изцяло в пространството, ограничено от равнината на Р, което съдържа наблюдателя – Да – Q може да закрива Р и Р трябва да остане на мястото си в списъка – преди Q, за да се визуализира преди Q – Не – прави се пети тест • Тест 5: Проверява се дали проекциите на P’ и Q’ върху XY не се припокриват – Ако не се припокриват – редът им на извеждане върху екрана е без значение и Р може да остане на мястото си в списъка

×