0.1 Zadanie úlohy

 

Počítačová grafika a číslicové spracovanie obrazu

Úloha 1

 

 

Roč. / ŠP

3. bak. / Aplikovaná informatika a automatizácia v priemysle

Rozsah

2-2zs

Ak. rok

2010/11, LS

Typ predmetu/kredity

P/5

 

 

 

Názov

Algoritmy počítačovej grafiky (analýza zadaného problému a návrh algoritmu)

 

Cieľ

Analyzovať zadaný problém a navrhnúť algoritmus pre jeho programovú implementáciu.

 

Zadanie

 

1.  Navrhnite riešenie pre OO programovú implementáciu zadaného geometrického resp. grafického problému. Analyzujte zadaný problém a navrhnuté riešenie zdokumentujte. Navrhnite a opíšte algoritmus pre riešenie zadaného problému a spôsob komunikácie používateľa s aplikáciou (používateľské rozhranie). Používateľské rozhranie vytvorte v prostredí MSVS 2010.

 

2.  Analyzujte možnosti implementácie grafickej aplikácie v prostredí Windows XP a opíšte postup zobrazovania grafiky v tomto OS.

 

3.  O riešení problému vypracujte správu formou e-referátu vo formáte MS Word 2007 s úpravou podľa pokynov a daného vzoru.

 

 

 

 

 

 

Trnava 28.2.2011                                                                                                                    J.V.

 

0.2 Vstupné údaje

PG a ČSO

Úloha 1 – vstupné údaje

Problém pre riešenie

 

 

 

 

 Vyplnenie konvexnej polygonálnej oblasti (n-uholník) so zadanou hranicou zvolenej farby, farbou tejto hranice s pomocou riadkového semienkového algoritmu a animácia a vizualizácia výsledku.

 

 

 

 

 

 

 

 

- 44 -

 

 

 

 

 

 

 

 

 

 

 

 

1 Grafický algoritmus

 

         1.1 riešenie problému konvexnosti

 

Mám zadané, že je treba vyplňovať konvexné polygóny a nekonvexné nie. Preto je treba nejakým spôsobom kontolovať, či je nakreslený polygón konvexný, alebo nekonvexný. Ak dostanem taký výsledok po nakreslení polygónu, že nakreslený polygón je nekonvexný, tak musím nejakým spôsobom zakázať vyplňovanie v programe.

 

         1.1.1 Konvexný polygón

 

Polygón nazývame konvexným - vypuklým, ak pre každú z jeho strán platí, že ostatné vrcholy ležia v jednej polrovine, určenej priamkou obsahujúcou túto stranu. [4]

Konvexný polygón je taký, ktorého ľubovoľné dva vnútorné body keď spojíme úsečkou, celá úsečka bude ležať vo vnútri tohto mnohouholníka.[5]

 

1.1.2 Poloha bodu k priamke

 

Z vzájomnej polohy bodu a priamky vieme vypočítať veľkosť uhla či je to konvexný, alebo nekonvexný (konvexný uhol vždy je menší ako 180°). S takým princípom vieme odhadnúť už pred dokončením kreslenia polygónu, či polygón bude konvexný, či nekonvexný.

[3] Príklad: Určte, či bod M[3, 2] nachádza v konvexnom uhlu AVB.

462

Obr. 1: poloha bodu k priamke

Podľa obrázku už vidíme, že bod sa nachádza v konvexnom uhlu AVB, teraz to dokážeme aj výpočtom.

Najprv si napíšeme rovnice AV a BV:

AV: x-y=0

BV: 0x+y-1=0

Konvexný uhol AVB je vlastne prienikom dvoch polorovín (AVB a BVA). Bod M tým pádom musí splniť dve podmienky: musí ležať aj v polorovine AVB, aj v polorovine BVA.

Do rovnice priamky AV dosadíme bod M:

AV: x-y=0

3-2=0

1 > 0

Polohu bodu M skontrolujeme pomocou bodu B:

AV: x-y=0

4-1=0

3 > 0

Overili sme, bod M nachádza v polorovine AVB, teraz overíme, či nachádza aj v BVA.

Do rovnice priamky BV dosadíme bod M:

BV: 0x+y-1=0

1 > 0

Polohu bodu M skontrolujeme pomocou bodu A:

BV: 0x+y-1=0

2 > 0

Aj z výpočtov sa vyplýva, že bod M nachádza v konvexnom uhlu AVB. [3]