Zápoctové úkoly z Javy (skolní rok 2004/2005)
PRO ZIMNÍ SEMESTR: ulohy jsou oznaceny poctem bodu (1 az 3 body). Bodovani
je jenom orientacni, vyhrazuji si pravo ho zmenit nebo prizpusobit konkretnimu reseni.
Ulohy do JaGrLib se mohou kombinovat s jinymi formami (referat, verejne predvedeni
a diskuse nejakeho zajimaveho algoritmu - viz stranky
cviceni).
PRO LETNÍ SEMESTR: aktualizace bude doplnena pozdeji!
Vsechny ulohy, ktere si vyberete (a zejmena pripadna spolecna temata pro PGR004 a PGR007),
konzultujte se mnou!
Technicke a organizacni podrobnosti viz "kucharka".
Vzdycky je potreba dodrzovat konvence systemu JaGrLib, zejmena:
- odvozovat nove moduly ze spolecneho predka
Piece
.
- snazit se psat kod prehledne, bude slouzit hlavne pro cteni clovekem!
Rychlost provadeni nema v nasi knihovne nejvyssi prioritu (existuji i vyjimky).
- pokud je to mozne, navrhovat algoritmy a datove struktury maximalne obecne,
snazit se zachovat moznost napojeni na ruzne jine "krabicky".
- komentovat dusledne zdrojovy kod pomoci konvenci systemu JavaDoc
(viz me soubory - autor "PE").
- uvadet ve vsech zdrojovych kodech sve jmeno a e-mail (v komentari
@author
).
- pri kazde zmene prepsat datum posledni modifikace a oznacit pouzitou verzi
knihovny JaGrLib (komentar
@version
, viz soubor
Version.java).
- pouzivat kontejnery z
package java.util
: (BitSet), HashMap,
HashSet, ArrayList, LinkedList, apod. + prislusne Iterator
. I zde jsou samozrejme
vyjimky potvrzujici pravidlo..
- pracovat v pomocnem baliku
package cz.cuni.jagrlib.testing
- zdarile moduly budou pozdeji zaclenovany do distribuce JaGrLib -
package cz.cuni.jagrlib.obscure
(bez zdrojaku) nebo
package cz.cuni.jagrlib.piece
(uplne verejne).
Podrobnejsi zasady najdete v "kucharce".
Návrhy úloh:
Schemata uvnitr slozenych zavorek "{ }
" ukazuji navrhovane pouziti
interface. Nektere interface jeste nemusi byt naprogramovany (nebo se vyjimecne mohou stat
predmetem mensich uprav). Hranate zavorky "[ ]
" vyznacuji nepovinnou
nebo volitelnou cast.
Temata pro 3D a pokrocilou 2D grafiku jsou ohodnocena kody A
az E podle poctu lidi v tymu (A nebo B .. vlk
samotar, C nebo D .. dva studenti, E nebo F .. tri a vice studentu).
-
- ZÁKLADY POCÍTACOVÉ GRAFIKY (Pocítacová grafika I):
- 1. (2 body): Kresleni usecky nekterym vicekrokovym
algoritmem (nebylo detailne na prednasce, je treba najit a prostudovat literaturu)
{
LineRender
nebo
LineXRender
-> BitMask
}
- 2. (1 az 2 body): Kresleni usecky s anti-aliasingem, zadani tloustky cary
{
LineRender
-> AlphaMask
}
- 5. (1 az 2 body): Kresleni kruznice nejakym alternativnim algoritmem (parametricka krivka, ..)
{
CircleRender
-> BitMask
}
- 6. (1 az 2 body): Kresleni kruznice s anti-aliasingem, zadani tloustky cary
{
CircleRender
-> AlphaMask
}
- 9. (1 az 2 body): Kresleni kruhoveho oblouku s anti-aliasingem, zadani tloustky cary
{
ArcRender
-> AlphaMask
}
- 12. (1 az 2 body): Kresleni elipsy s anti-aliasingem, zadani tloustky cary
{
EllipseRender
-> AlphaMask
}
- 15. (2 body): Kresleni eliptickeho oblouku s anti-aliasingem, zadani tloustky cary
{
EllipticArcRender
-> AlphaMask
}
- 136. (2 body): Kresleni elipsy v obecne poloze
{
EllipseRender
-> BitMask
}
- 137. (2 az 3 body): Kresleni elipsy v obecne poloze s anti-aliasingem, zadani tloustky cary
{
EllipseRender
-> AlphaMask
}
- 16. (2 body): Kresleni kubicke (Bezierovy) krivky:
diferencni algoritmus (po pixelech nebo kratkych useckach), vhodna implementace
aritmetiky v pevne radove carce, dynamicka presnost..
{
CubicCurveRender
-> BitMask
}
- 17. (3 body): Kresleni kubicke (Bezierovy) krivky s anti-aliasingem,
zadani tloustky cary
{
CubicCurveRender
-> AlphaMask
}
- 18. (2 body): Kresleni hranice podle kubicke (Bezierovy) krivky. Viz uloha 16.
{
CubicCurveXRender
-> BitMask
}
- 19. (1 az 2 body): Vyplnovani n-uhelnika v rovine (radkovy
rozklad), prepinani dvou metod: parita, stupen obtoceni. Osetreni disjunkce sousednich
n-uhelniku, implementace "fixed-point" aritmetikou..
{
PolygonFillRender
-> BitMask
}
- 20. (2 body): Srafovani vnitrku mnohouhelnika (uhel a
frekvence srafu). Obe metody - viz predchozi bod. Presnost (=rovnobeznost) srafovani
{
PolygonHashRender
-> BitMask
}
- 21. (2 az 3 body): Vyplnovani n-uhelnika v rovine s anti-aliasingem, zadani tloustky cary
{
PolygonFillRender
-> AlphaMask
}
- 22. (1 az 2 body): Vyplnovani souvisle oblasti v rovine
("flood-fill") - ruzne definice hranic, 4-souvislost i 8-souvislost, ruzne
algoritmy (rozdelit do nekolika uloh).
- Klasifikacni objekt:
{
BitMask,
Property
->
RasterGraphics
}
,
- vlastni vyplnovaci algoritmus:
{
FloodFillRender
-> BitMask,
BitMask
}
- 23. (3 az 6 bodu - pro vic resitelu): Kresleni True-type pisma (kompletni
font-manager vcetne cache). Cteni
.TTF
souboru, osetreni ruznych kodovani,
zadavani velikosti a orientace pismen. Prevod z True-type reprezentace do vektoroveho
formatu...
{
TextRender
-> BitMask
nebo AlphaMask
nebo VectorGraphics
}
- 24. (1 az 2 body): Orezavani usecek algoritmem
"Cohen-Sutherland" (kody oblasti). Vysledky v desetinne aritmetice.
{
LineRender,
RectangleWindow
-> LineRender
}
nebo
-
{
VectorGraphics,
RectangleWindow
-> VectorGraphics
}
- 25. (1 az 2 body): Orezavani usecek algoritmem
"Cyrus-Back" (parametricke orezavani). Vysledky v desetinne aritmetice.
{
LineRender,
PolygonWindow
-> LineRender
}
nebo
{
VectorGraphics,
PolygonWindow
-> VectorGraphics
}
- 26. (1 az 2 body): Orezavani usecek algoritmem
"Liang-Barsky" (parametricke orezavani pro obdelnikove okno). Vysledky
v desetinne aritmetice.
{
LineRender,
RectangleWindow
-> LineRender
}
nebo
{
VectorGraphics,
RectangleWindow
-> VectorGraphics
}
- 27. (1 az 3 body - podle obtiznosti): Orezavani usecek nejakym jinym algoritmem
(z literatury). Vysledky v desetinne aritmetice.
{
LineRender
[ PolygonWindow ]
-> LineRender
}
nebo
{
VectorGraphics
[ PolygonWindow ]
-> VectorGraphics
}
- 28. (1 az 2 body): Orezavani polygonu v rovine -
"Sutherland-Hodgman" (proudove orezavani). Vysledky v desetinne aritmetice.
{
PolygonRender,
RectangleWindow
-> PolygonRender
}
nebo
{
VectorGraphics,
RectangleWindow
-> VectorGraphics
}
- 29. (2 body): Orezavani polygonu v rovine podle
konvexniho polygonu - alternativa algoritmu "Sutherland-Hodgman" (proudove
orezavani). Vysledky v desetinne aritmetice.
{
PolygonRender,
PolygonWindow
-> PolygonRender
}
nebo
{
VectorGraphics,
PolygonWindow
-> VectorGraphics
}
- 30. (2 az 3 body): Orezavani polygonu v rovine podle
nekonvexniho polygonu (algoritmy najit v literature). Vysledky v desetinne aritmetice.
{
PolygonRender,
PolygonWindow
-> PolygonRender
}
nebo
{
VectorGraphics,
PolygonWindow
-> VectorGraphics
}
- 31. (1 az 3 body - podle obtiznosti):
Pultonovani a rozptylovani - ruzne algoritmy (= mnoho uloh!).
{
Pen nebo
Brush
->
BitMask,
RasterGraphics
}
nebo
{
Trigger
-> RasterGraphics,
RasterGraphics
}
- 32. (1 az 2 body - podle obtiznosti):
Konverze mezi barevnymi systemy RGB, CMY[K], HSV, HLS apod. (ne vse bylo na prednasce).
{
ValueTransferFunction
}
nebo
{
Trigger
-> RasterGraphics,
RasterGraphics
}
- 33. (1 az 3 body): Zobrazovani true-color obrazku s pomoci
barevne palety: pevna ("a priori") paleta - 3-3-2, 6x7x6 apod., zobrazovani
v jinych barevnych systemech, ..
{
Pen nebo
Brush,
ColormapStore
->
BitMask,
RasterGraphics
}
nebo
{
ColormapStore,
Trigger
-> RasterGraphics,
RasterGraphics
}
- 34. (2 az 3 body): Barevny dithering (s nejakou pevnou paletou).
Jakakoli vhodna metoda.
{
Pen nebo
Brush,
ColormapStore
->
BitMask,
RasterGraphics
}
nebo
{
ColormapStore,
Trigger
-> RasterGraphics,
RasterGraphics
}
- 35. (2 az 3 body): Konstrukce adaptovane barevne palety.
Nekolik variant: Heckbertuv algoritmus ("median cut"), octree, shlukova
analyza ("clustering"), .. Prvni modul:
{
Property,
Trigger
-> RasterGraphics,
ColormapStore
}
nebo
{
Property,
Trigger,
ColormapStore
-> RasterGraphics
}
.
Druhy (mapovaci) modul:
{
[ Property ]
Trigger
->
ColormapStore,
RasterGraphics,
RasterGraphics
}
- 36. (2 az 3 body): Vypocet animace pomoci palety - vstupem
je serie obrazku, vystupem jedna bitmapa animovana pomoci zmeny palety.
{
[ Property ]
Trigger
->
RasterGraphics*,
RasterGraphics,
ColormapStore
}
- 37. (1 az 2 body): Objekt realizujici pruchod obdelnikovou
bitmapou (scanline, serpentine, Morton, interlace-GIF, apod.).
{
Order2D
}
- 38. (1 az 2 body):
Kodovani a dekodovani rastroveho obrazku pomoci RLE. Obecny pruchod daty (scanline,
serpentine, Morton, ..).
{
[ Property ]
Trigger
->
RasterGraphics,
Order2D,
BitStream
}
nebo
{
[ Property ]
Trigger
->
RasterGraphics,
Order2D,
EntropyCodec
}
- 39. (2 body): Algoritmus LZW (kompatibilni
s internim koderem formatu GIF). Pokud mozno ho zobecnit (neomezena velikost
slovniku, prosty vystupni format - bez "paketu", ..).
{
EntropyCodec
->
BitStream
}
- 40. (2 az 3 body): Jine kompresni algoritmy: [dynamicke]
Huffmanovo kodovani, [dynamicke] aritmeticke kodovani, slovnikove metody ruzne
od LZW, ..
{
EntropyCodec
->
[ EntropyHistogram ]
BitStream
}
- 41. (2 az 3 body): Kodovani a dekodovani rastroveho
obrazku pomoci kvadrantoveho stromu. Velikost: mocniny 2 nebo obecna (2 ruzne
ulohy).
{
QuadTree
->
RasterGraphics
}
nebo
{
QuadTree
->
BitMask
}
- 42. (1 az 2 body): Mnozinove operace provadene nad
kvadrantovym stromem. Obecna mnozinova operace zadavana parametrem.
{
[ Trigger ]
QuadTree
->
QuadTree*
}
nebo
{
Trigger
->
QuadTree*,
QuadTree
}
- 43. (1 az 3 body): Ukladani a nahravani rastroveho
obrazku v nejakem grafickem formatu. Jen vyprane formaty (domluvte se
s cvicicim).
{
DataFileFormat
->
RasterGraphics
[ BitStream ]
}
- 3D GRAFIKA (Pocítacová grafika II, III, atd.):
- 45. (1 az 2 body): Viditelnost - plovouci horizont.
Horizonty reprezentovany rastrove, carova i vyplnovaci varianta, rastrovy vystup.
{
Property,
Trigger
-> FunctionR2ToR,
RasterGraphics
}
nebo
{
Property,
Trigger
-> Brep,
RasterGraphics
}
- 46. (2 az 3 body): Viditelnost - plovouci horizont.
Horizonty reprezentovany vektorove (lomene cary), vektorovy vystup.
{
Property,
Trigger
-> FunctionR2ToR,
VectorGraphics
}
nebo
{
Property,
Trigger
-> Brep
[ VectorGraphics ]
}
- 47. (2 az 3 body): Viditelnost - Appeluv algoritmus.
Vstup lze predpokladat v topologicke reprezentaci (winged-edge), vektorovy vystup.
{
Property,
Trigger
-> Brep,
VectorGraphics
}
- 48. (1 az 2 body): Viditelnost - Z-buffer. Pro kresleni
viditelnych casti se vola externi "vyplnovaci rutina" (kvuli stinovani
apod.).
{
Property,
Trigger
-> Brep,
FaceRender
}
- 49. (2 az 3 body): Viditelnost - maliruv algoritmus.
Pro zacatek staci bez prosekavani sten a bez rozsekavani cyklu. Externi
"vyplnovaci rutina" (kvuli stinovani apod.).
{
Property,
Trigger
-> Brep,
FaceRender
}
- 50. (2 az 3 body): Viditelnost - Watkinsuv algoritmus
(radkovy rozklad). Zatim bez prosekavani sten.
Externi "off-line vyplnovaci rutina" (kvuli stinovani apod.).
{
Property,
Trigger
-> Brep,
FaceRender
}
- 51. (2 az 3 body): Viditelnost - Warnockuv algoritmus
("rozdel a panuj"). Externi "off-line vyplnovaci rutina"
(kvuli stinovani apod.).
{
Property,
Trigger
-> Brep,
FaceRender
}
- 52. (2 az 3 body):
Jakykoli dalsi algoritmus na viditelnost - podle literatury.
{
Property,
Trigger
-> Brep,
FaceRender
}
nebo
{
Property,
Trigger
-> Brep,
VectorGraphics
}
- 53. nekolik uloh B:
Vypocet vrzenych stinu - ruzne algoritmy (stinovy Z-buffer, stinova
telesa, BSP reprezentace stinu, apod.).
{
Property,
Trigger
-> Brep
}
nebo
{
Property,
Trigger
-> Brep,
RasterGraphics
}
- 54. A: Prevod izolovane B-rep
do topologickeho tvaru (winged-edge). Duraz by mel byt kladen na rychlost
prevodu (napr. hasovanim).
{
Property,
Trigger
-> Brep,
EulerOperators,
Brep
}
- 55. B: Kompetni sada Eulerovskych
operaci (vcetne inverznich) nad topologickou B-rep (wiged-edge).
Derave steny i derava telesa!
{
Brep,
EulerOperators
}
- 56. C: Prevod CSG reprezentace na
B-rep - implementace mnozinovych operaci nad mnohosteny. Nejlepsi je
pracovat s topologickou B-rep (winged-edge). Zamerit se na rychlost vypoctu!
{
Property,
Trigger
-> CSGNode,
Brep
[ EulerOperators ]
}
- 57. nekolik uloh B az C:
Ruzne typy aproximacnich a interpolacnich krivek a ploch - Bezierovy, B-spline, NURBS.
Parametricka reprezentace, nektere zakladni algoritmy - inverzni transformace, adaptivni prevod
do B-rep, .. Prevod do B-rep
{
Property,
Trigger
-> Interpolation2D,
Brep
[ EulerOperators ]
}
, jednotlive krivky
{
Interpolation1D
}
nebo plochy
{
Interpolation2D
}
- 58. nekolik uloh B az C:
Lokalni model osvetleni - Strauss, Torrance-Cook apod. Pristup po vzorcich (konkretni smer
pohledu) nebo globalni vysledek (aproximace kompletni BRDF v danem bode - napr. pro dalsi
vzorkovani v Monte-Carlo metodach).
{
LightModel
}
- 59. A: Vyplnovaci rutina - konstantni
stinovani. On-line (polygon+maska) i off-line (nekolik volani pro dany polygon) varianta.
{
FaceRender
-> Brep,
RasterGraphics
}
- 60. B: Vyplnovaci rutina - Gouraudovo
stinovani. On-line (polygon+maska) i off-line (nekolik volani pro dany polygon) varianta.
{
FaceRender
-> Brep,
RasterGraphics
}
- 61. B: Vyplnovaci rutina - Phongovo stinovani.
On-line (polygon+maska) i off-line (nekolik volani pro dany polygon) varianta.
{
FaceRender
-> Brep,
RasterGraphics
}
- 62. nekolik uloh B: Vypocet pruseciku
paprsku s ruznymi elementarnimi telesy - krychle, kuzel, paraboloid, toroid, ..
Vysledkem je mnozina pruseciku (useku na poloprimce) + 2D povrchove souradnice
+ normalove vektory apod.
{
Solid
}
- 63. B az C:
Vypocet pruseciku paprsku s rotacni plochou. Rotacni plocha je zadana (rovinnou nebo
prostorovou) krivkou a osou rotace.
{
Solid
}
- 64. C: Vypocet pruseciku paprsku
s Bezierovou (B-spline) bikubickou plochou. Plocha je zadana matici ridicich bodu.
{
Solid
}
- 65. D: Vypocet pruseciku paprsku
s NURBS plochou. Plocha je zadana matici ridicich bodu a dvema uzlovymi vektory.
{
Solid
}
- 66. C az D:
Vypocet pruseciku paprsku s implicitne zadanou plochou. Ruzne moznosti zadani implicitni
plochy (pevny format - "blobs" nebo libovolny aritmeticky vyraz), ..
{
Solid
}
- 67. A az C:
Jednoduche textury modifikujici barvu - pocitane (sachovnice, pruhy, kruhy, apod.)
nebo zadane bitmapou (prip. MIP-mapou).
{
Texture
}
- 68. B: Bump-map textury - pocitane nebo zadane
bitmapou.
{
Texture
}
- 69. B az C:
Jakekoli slozitejsi textury - modifikace optickych vlastnosti materialu, kombinace
s bump-mapou, apod.
{
Texture
}
- 70. B az C:
Texturovaci funkce - fraktaly, sumove funkce, slozitejsi funkce syntetizovane
z sumu, ..
{
Texture
}
- 71. nekolik uloh B:
Ruzne vzorkovaci algoritmy pro anti-aliasing (2D vzorkovani). Staticke, inkrementalni
nebo adaptivni varianty (nemusi obsahovat zjemnovaci orakulum).
{
ImageSynthesizer
-> ImageFunction
}
- 72. nekolik uloh B az C:
Ruzne N-rozmerne vzorkovaci algoritmy. Staticke nebo dynamicke varianty (nemusi obsahovat
zjemnovaci orakulum). Neco jako
{
ImageSynthesizer
}
- 73. B: Vypocet mekkych stinu v Ray-tracingu.
Neco jako
{
ImageSynthesizer
}
- 74. B: Simulace opticke hloubky ostrosti
v Ray-tracingu. Zrejme dva moduly
{
RayGenerator
}
a
{
ImageSynthesizer
}
- 75. B: Vypocet rozmazani rychlym pohybem
sceny v Ray-tracingu. Neco jako
{
ImageSynthesizer
}
- 76. B: Vypocet neostreho odrazu/lomu
v Ray-tracingu (podle obecne BRDF). Neco jako
{
ImageSynthesizer
}
- 77. B: Vypocet spektralniho rozkladu svetla
v Ray-tracingu (rozklad svetla podle vlnove delky). Neco jako
{
ImageSynthesizer
}
- 78. B az C:
Obecne schema pro distribuovany Ray-tracing - libovolna kombinace predchozich metod
(vcetne anti-aliasingu). Nezavisle vzorkovani ve vice dimenzich (stratified sampling).
Neco jako
{
ImageSynthesizer
}
- 79. nekolik uloh B:
Ruzne netradicni generatory primarnich paprsku (kamery) pro Ray-tracing - napodobeni
objektivu "rybi oko" a jinych nelinearnich projekci, ..
{
RayGenerator
}
- 80. nekolik uloh B az D:
Jednotlive urychlovaci metody pro Ray-tracing - obalova telesa, hierarchie obalovych teles,
prostorove adresare (staticke i adaptivni), smerove urychlovaci metody, ..
{
Intersectable
-> RTScene
}
- 81. ruzne ulohy C az
F:
Perzistence pro Ray-tracing - navrh koncepce a implementace. Zadani geometrie sceny,
libovolnych dalsich parametru (materialove konstanty, textury, kamera), konfigurace
vlastniho vypoctu (anti-aliasing, distribuovany vypocet, vzorkovaci metody). Priprava
pro animaci. Ulozeni stavu vypoctu, paralelni distribuovany vypocet (cluster na siti
LAN).
- 82. nekolik uloh B az
C: Import sceny pro Ray-tracing z ruznych formatu
(3DS, Pov-Ray, RenderMan, RayShade, Blender, VRML, apod.). Pripadne uvazovat i o exportu.
- 83. nekolik uloh B az D:
Aproximacni a interpolacni objekty (interpolatory) - 1D, 2D i vice-dimenzionalni (napr.
interpolacni polynomy, B-spline, wavelety, ..). Interpolace ve sferickych souradnicich.
{
Interpolation1D
}
nebo
{
Interpolation2D
}
- 84. C: Kvaterniony a jejich interpolace -
pro reprezentaci orientace telesa ve 3D.
{
Interpolation2D
}
- 85. B: Odhad konfiguracniho faktoru mezi
dvema ploskami (bez viditelnosti).
{
xxx
-> Brep
}
- 86. nekolik uloh B az C:
Vypocet konfiguracniho faktoru z plosky do zbytku sceny - ruzne algoritmy (polokrychle,
Sillion, Monte-Carlo, ..).
{
xxx
-> Brep
}
- 87. B: Pocatecni rozdeleni B-rep sceny
na plosky (konecne prvky) pro radiacni metodu. Jednoducha parametrizace ulohy
- rizeni mezniho rozmeru nebo objemu plosek.
{
yyy
-> Brep
}
- 88. D: Pocatecni rozdeleni B-rep sceny
na plosky podle odhadu hranic nespojitosti stinu. Na vstupu musi byt oznaceny
plosky, ktere jsou zdrojem svetla (na jejichz hranici je implicitni nespojitost
svetla).
{
yyy
-> Brep
}
- 89. B: Klasicky vypocet radiacni metody
(metoda konstantnich elementu) - staticke deleni sceny, nejaka bezna
(numericka) metoda reseni soustavy rovnic (sbirani energie).
- 90. C: Adaptivni zjemnovani do klasicke
radiacni metody (sbirani energie). Orakulum rozhodujici o deleni plosky,
zjemneni site, prepocitani radiosit (musi fungovat uprostred numericke iterace).
- 91. B: Prevod konstantnich radiosit
na hodnoty ve vrcholech sceny (pro Gouraudovo stinovani).
- 92. B: Reseni radiacni soustavy metodou
strileni a trideni (varianta Southwellovy metody). Staticke deleni sceny.
- 93. C: Adaptivni zjemnovani do
strilejici radiacni metody. Orakulum rozhodujici o deleni plosky, zjemneni
site, korektni prepocitavani radiosit.
- 94. B: Modul pro prestrelovani
(hyper-relaxaci) v radiacni metode. Adaptivni rizeni prestrelovaciho
koeficientu, prirozeny odhad podle celkoveho objemu dosud nezpracovane
energie ve scene (Purgathofer, Feda).
- 95. B: Dvoustupnova hierarchicka radiacni
metoda - staticke rozdeleni sceny na plosky a elementy, libovolna staticka
metoda reseni mensi soustavy, prepocitani radiosit do elementu.
- 96. C: Obecna hierarchicka radiacni
metoda - staticka varianta. Prvotni rozdeleni sceny podle odhadu konfiguracniho
faktoru (F-pravidlo). Vypocet strilenim.
- 97. C az D:
Obecna hierarchicka radiacni metoda - adaptivni varianta. Prvotni rozdeleni sceny
podle odhadu konfiguracniho faktoru (F-pravidlo). V prubehu vypoctu adaptivni
zjemnovani podle BF-pravidla. Prestrelovani.
- 98. C az E:
Obecna hierarchicka radiacni metoda - dualni varianta. Prvotni rozdeleni sceny
podle odhadu konfiguracniho faktoru (F[I]-pravidlo). V prubehu vypoctu adaptivni
zjemnovani podle BFI-pravidla. Paralelni vypocet radiosity B a dulezitosti I - ve
scene musi byt definovana kamera.
- 99. C az E:
Monte-Carlo radiacni metoda - propagace svetla nahodnymi paprsky (nemusi se pocitat
konfiguracni faktory). Adaptivni deleni (na ploskach se musi pamatovat vsechny
dopady paprsku), dualni varianta (propagace dulezitosti = potencialu opacnym smerem), ..
- 2D GRAFIKA (Pokrocilá 2D pocítacová grafika, atd.):
- 100. B: Kompozice rastrovych obrazku pomoci
alfa-kanalu: bezne unarni i binarni operace (pracujici na datech s predem
vynasobenym alfa).
{
Property,
Trigger
-> RasterGraphics
[ RasterGraphics ]
RasterGraphics
}
- 101. B: Klicovani pres modre pozadi
("blue-screen") - automaticka extrakce objektu v popredi. Pozadi je
zadane zakladni barvou a povolenym rozptylem (klasifikace pixelu pozadi lze oddelit).
{
Property,
Trigger
-> RasterGraphics,
AlphaMask,
RasterGraphics
}
- 102. C: Klasifikacni rutina pro
"blue-screen" klicovani - hleda pixely pozadi, popredi a
obrysu. Vysledek vraci protokolem
AlphaMask
(jen hodnoty
0.0
, 0.5
a 1.0
).
{
Property,
AlphaMask
-> RasterGraphics
}
- 103. B: Vyplnovaci rutina - mapovani
jednoduche bitmapove textury. On-line (polygon + maska) i off-line (nekolik
volani pro dany polygon) varianta.
{
FaceRender
-> Brep,
RasterGraphics
}
- 104. C: Vyplnovaci rutina - kombinace
stinovani s mapovanim jednoduche bitmapove textury. On-line (polygon + maska)
i off-line (nekolik volani pro dany polygon) varianta.
{
FaceRender
-> Brep,
RasterGraphics
}
- 105. C: Vyplnovaci rutina - kombinace
stinovani s MIP-mapovanou texturou. On-line (polygon + maska) i off-line
(nekolik volani pro dany polygon) varianta.
{
FaceRender
-> Brep,
RasterGraphics
}
- 106. B: Prepocitavani rastroveho obrazku
podle zadane deformace (warping). Zpetny algoritmus s filtraci a interpolaci
(staci bilinearni a bikubicka).
{
Property,
Trigger
-> FunctionR2ToR2,
RasterGraphics,
RasterGraphics
}
- 107. C: Prepocitavani rastroveho obrazku
podle zadane deformace (warping). Dopredny algoritmus s filtraci a interpolaci
(staci bilinearni a bikubicka).
{
Property,
Trigger
-> FunctionR2ToR2,
RasterGraphics,
RasterGraphics
}
- 108. nekolik uloh B az
C: Vicekrokovy warping (rozklad deformacni
funkce na radkove a sloupcove kroky) - mechanismus vypoctu
{
Property,
Trigger
-> FunctionR2ToR2,
RasterGraphics,
RasterGraphics
}
a priklady konkretnich deformaci
{
FunctionR2ToR2
}
- 109. B: Warping - deformace
trojuhelnikove site (barycentricke souradnice, nespojitost prvni derivace).
{
FunctionR2ToR2
}
- 110. C: Warping - sit spline krivek
(B-spline krivky, dvoukrokovy algoritmus).
{
FunctionR2ToR2
}
- 111. C: Warping - spline plochy
(deformace zdrojove i cilove site, nutnost inverzni spline-transformace
- numericky algoritmus).
{
FunctionR2ToR2
}
- 112. C: Warping -
"feature-based" (0D i 1D "features", vazeny prumer s pomoci
"funkci vlivu", parametrizace).
{
FunctionR2ToR2
}
- 113. D: Metamorfoza polygonu v rovine
- zalozena na fyzikalnim modelu (deformacni prace). Vypocet optimalniho
prirazeni vrcholu i vlastni metamorfoza (morphing).
{
Interpolation1D
-> Brep
}
- 114. D: Geometricky morphing soustavy
"features" - vymyslet rozumne hladke reseni bez singularit.
{
Interpolation1D
-> Brep
}
- 115. B: Implementace vlastniho vypoctu
morphingu - dan je parametrizovany warping a dva rastrove obrazky.
{
Property,
Trigger
-> FunctionR2ToR2,
RasterGraphics,
RasterGraphics,
RasterGraphics
}
- 116. mnoho uloh B az
D: Implementace datovych struktur:
Region-quadtree, MX-quadtree, Point-Region-quadtree, Point-quadtree,
pseudo-quadtree, K-D-tree, A-K-D-tree, BSP-tree (ruzne varianty), Range-tree
(ruzne varianty), R-tree, .. Konstrukce (operace insert, delete), vyvazovani,
lokalizace, pruchod ze stredu nebo "sweep".
{
GeometrySearch
-> Brep
}
- 117. C: Strip-tree: konstrukce, detekce
a vypocet pruseciku dvou krivek.
{
GeometrySearch
-> Brep
}
- 118. nekolik uloh C:
PMx-tree (polygonalni mapy): konstrukce, lokalizace bodu, mnozinove operace apod.
{
GeometrySearch
-> Brep
}
, mnozinove operace nejak jinak
- 119. mnoho uloh B az
D: Transformacni funkce pro kompresi
obrazu - dekorelace dat, separace podle dulezitosti. Globalni
transformace, blokova transformace, [1D], 2D, [3D], dopredna i zpetna
transformace. Konkretni pristupy: Fourierova, sinova, cosinova, Hartleyova,
Walshova, Hadamardova, Haarova, Karhunen-Loewyho, waveletove, apod.
transformace. Rychly vypocet O(N log N), celociselna aritmetika (kde
je to mozne).
{
Property,
Trigger
-> SampleData,
SampleData
}
- 120. nekolik uloh B:
Pruchody 2D rastrovou matici (space-filling curves): Z-order, Morton,
Peano-Hilbert, cik-cak, apod. Osetreni libovolne velikosti 2D oblasti.
Ekvivalentni s ulohou 37.
{
Order2D
}
- 121. nekolik uloh B az
C: 1D predikce - linearni konecny
prediktor, polynomialni prediktor, staticke a adaptivni varianty.
{
Property,
Trigger
-> SampleData,
SampleData
}
- 122. nekolik uloh B az
D: 2D predikce - linearni nebo
polynomialni prediktory, staticke a adaptivni varianty, 1-bitove prediktory.
{
Property,
Trigger
-> SampleData,
SampleData
}
- 123. nekolik uloh B:
Skalarni kvantovace - linearni, nelinearni, mrtva zona rizena parametrem, ..
{
Property,
Trigger
-> SampleData,
SampleData
}
- 124. nekolik uloh B az
C: Obecne vektorove kvantovace -
uniformni a adaptivni, konstrukce podle hustoty pravdepodobnosti
nebo vzorku dat, .. Principy: shora dolu, shlukova analyza, iteracni
algoritmy, neuronove site, apod.
{
Property,
Trigger
-> SampleData,
SampleData
}
- 125. nekolik uloh B az
C: Vektorove kodery (bitova alokace)
- pevne prirazeni, dynamicka alokace (podle amplitudy = energie), ..
{
Property,
Trigger
-> SampleData
[ Order2D ]
EntropyCodec
}
- 126. nekolik uloh B az
C: Kodovani ridkeho souboru dat
([1D], 2D, [3D]) - preskakovani nulovych useku, 1-bitova a vice-bitova
data, staticke i adaptivni kodovani, ..
{
Property,
Trigger
-> SampleData
[ Order2D ]
EntropyCodec
}
- 127. nekolik uloh C az
E: Implementace konkretnich kompresnich
standardu (nemusi byt nutne 100% bitove kompatibilni, ale urcite musi byt
ekvivalentni) - baseline JPEG, losless JPEG, JPEG-2000, .. Modularni
konstrukce kodeku: priprava pro experimenty (vymena jednotlivych modulu),
provedeni jednoduchych mereni a porovnani. Priblizne (bez vymennych modulu) -
{
Property,
Trigger
-> SampleData,
BitStream
}
- 128. nekolik uloh B az
C: Kodovani paletoveho obrazku (cartoon,
vystup kresliciho programu, jednoducha business grafika) - quad-tree, pruchod
daty + nektera slovnikova metoda (viz ulohy 39. - 40.), apod.
{
Property,
Trigger
-> SampleData
[ Order2D ]
EntropyCodec
}
- 129. C az D:
Segmentace obrazku pro vysoce ztratovou kompresi - hledani homogennich oblasti
a hranic mezi nimi. Metody: narustani oblasti, soft-fill, apod. Redukce poctu
oblasti, ..
{
Property,
Trigger
-> SampleData,
SampleData
}
- 130. nekolik uloh B az
D: Hledani co nejpodobnejsiho bloku
v obrazku - v celem obrazku nebo jen omezene, moznost zmeny meritka nebo
jednoduche afinni transformace. Kompletni vyhledavani (kvalita) nebo
sub-optimalni reseni (rychlost).
{
zzz
-> SampleData,
SampleData
[ SampleData ]
}
- 131. nekolik uloh B az
D: Fraktalni komprese obrazu - pevne
delani, quad-tree, jine segmentace. Ruzne metody kodovani, rizeni kvality
vysledku nebo kompresniho pomeru. Superpozice vice zdrojovych bloku.
- 132. C az D:
Fraktalni komprese videa - zavislosti uvnitr BOP (block of pictures),
automaticke urcovani hranic mezi BOP, moznost intra-bloku a intra-snimku,
prenos bloku v meritku (1:1), ..
- 133. B az D:
Klasicka komprese videa s predikci pohybu - referencni snimky, dopredna a
zpetna predikce pohybu, kodovani rozdilovych bloku (specialni pripad:
bloky bez predikce = intra-bloky), ..
- 134. B: Jednoducha rychla predikce
mezi sousednimi pulsnimky (fields) prokladaneho video-signalu - moznost
pouzit tez predchoziho kompletniho snimku.
{
Property,
Trigger
-> SampleData,
SampleData,
EntropyCodec
}
- 135. C az
D: Kompenzace pohybu ve waveletovem
rozkladu snimku (frames) nebo pulsnimku (fields) - Mallatuv
rozklad, nejaky jednodussi wavelet, omezene prohledavani, hierarchicke
hledani, ..
[Cvicení PGR003, PGR004, PGR007]
[Prednáska PGR003]
[Prednáska PGR004]
[Prednáska PGR007]
[Projekt JaGrLib]
Copyright (c) 2000-2004 Josef Pelikán,
poslední změna: 18.10.2004 ($Rev: 926 $)