10.08.2013 Views

Algoritmus plovoucího horizontu

Algoritmus plovoucího horizontu

Algoritmus plovoucího horizontu

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Algoritmus</strong> <strong>plovoucího</strong><br />

<strong>horizontu</strong><br />

© 1995-2012 Josef Pelikán<br />

CGG MFF UK Praha<br />

pepca@cgg.mff.cuni.cz<br />

http://cgg.mff.cuni.cz/~pepca/<br />

Horizont 2012 © Josef Pelikán, http://cgg.mff.cuni.cz/~pepca<br />

1 / 12


<strong>Algoritmus</strong> <strong>plovoucího</strong> <strong>horizontu</strong><br />

pouze pro graf funkce dvou proměnných<br />

– plocha z = f(x,y)<br />

pro některé parametry středové projekce nedává<br />

správné výsledky<br />

generuje čárovou kresbu<br />

– umí vytvořit vektorový výstup na plotter<br />

rychlejší rastrová varianta<br />

– exituje i varianta vyplňující plochy<br />

Horizont 2012 © Josef Pelikán, http://cgg.mff.cuni.cz/~pepca<br />

2 / 12


Odstranění neviditelných čar<br />

Horizont 2012 © Josef Pelikán, http://cgg.mff.cuni.cz/~pepca<br />

3 / 12


Princip práce algoritmu<br />

povrchové křivky dané plochy kreslím odpředu<br />

dozadu<br />

– objekt může být zakryt pouze objekty nakreslenými již<br />

dříve<br />

udržuji si obrys dosud nakreslené části roviny<br />

– graf funkce dvou proměnných: dvě křivky (lomené čáry) -<br />

horní a dolní horizont<br />

viditelné části křivek musí ležet mimo aktuální<br />

obrys<br />

Horizont 2012 © Josef Pelikán, http://cgg.mff.cuni.cz/~pepca<br />

4 / 12


Výpočet viditelnosti<br />

viditelná část<br />

dolní horizont<br />

zakrytá<br />

část<br />

horní horizont<br />

kreslená křivka<br />

Horizont 2012 © Josef Pelikán, http://cgg.mff.cuni.cz/~pepca<br />

5 / 12


Oprava obrysových křivek<br />

dolní horizont<br />

horní horizont<br />

Horizont 2012 © Josef Pelikán, http://cgg.mff.cuni.cz/~pepca<br />

6 / 12


Implementace <strong>horizontu</strong><br />

lomené čáry: [x 1 ,y 1 ], [x 2 ,y 2 ] ... [x n ,y n ], x i < x i+1<br />

– vektorový výstup (velká přesnost)<br />

– nutnost počítat průsečíky lomených čar<br />

pole mezních hodnot: y min [i], y max [i], 0i


Dvě sítě povrchových křivek<br />

Horizont 2012 © Josef Pelikán, http://cgg.mff.cuni.cz/~pepca<br />

8 / 12


Pořadí vykreslování<br />

půdorys<br />

I<br />

IV<br />

Horizont 2012 © Josef Pelikán, http://cgg.mff.cuni.cz/~pepca<br />

III<br />

II<br />

směr<br />

pohledu<br />

9 / 12


Úsečky s velkou směrnicí<br />

|směrnice| > 1<br />

vynechané pixely<br />

Horizont 2012 © Josef Pelikán, http://cgg.mff.cuni.cz/~pepca<br />

horní horizont<br />

|směrnice| < 1<br />

v pořádku<br />

10 / 12


Úprava rastrového algoritmu<br />

odstředivé kreslení<br />

– úsečku kreslím ve směru od <strong>horizontu</strong><br />

– obtížné úpravy pro velmi dlouhé úsečky<br />

dvě fáze zpracování každé úsečky<br />

1. kreslím úsečku (testuji každý pixel)<br />

2. opravuji horizonty<br />

dvě sady horizontů (ztotožňované po každé úsečce)<br />

1. sadu používám k ořezávání kreslené úsečky<br />

2. sadu aktualizuji podle kreslené úsečky<br />

Horizont 2012 © Josef Pelikán, http://cgg.mff.cuni.cz/~pepca<br />

11 / 12


Konec<br />

Další informace:<br />

J. Foley, A. van Dam, S. Feiner, J. Hughes:<br />

Computer Graphics, Principles and Practice, 651-<br />

656<br />

Jiří Žára a kol.: Počítačová graka, principy a<br />

algoritmy, 307-311<br />

Horizont 2012 © Josef Pelikán, http://cgg.mff.cuni.cz/~pepca<br />

12 / 12

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!