﻿<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xml" href="/cjs/examples.screen.xsl" media="screen"?>
<examples chapter="Grafický formát PNM (2)" directory="pnm.duha">

  <note>
    Příklady 5 a 6 pro vás vymyslel Vyacheslav Tretyachenko.
  </note>

<!--
  <example>
    <text>
    </text>
    <hint>
    </hint>
    <solution src="pnm.duha/.py" lang="python" />
  </example>
-->


  <example>
    <text>
        Vytvořte programem vhodně velký obrázek jednobarevné „duhy“ v odstínech šedi ve formátu PPM (varianta P6). Úkolem je tedy nagenerovat čtverec, kde postupně každý následující sloupeček (nebo řádek) bude o něco světlejší než předchozí.<br/>
        Ukázkový výstup: <img src="_files/duha/1_binary.png" width="256" height="256" alt="ukázkový výstup duhy" align="center" />
    </text>
    <hint>
        Jelikož odstíny šedi v RGB získáte zapsáním stejných hodnot pro jednotlivé barvy, nejjednodušší je asi udělat obrázek o rozměrech 256x256 pixelů.
    </hint>
    <solution src="pnm.duha/1_binary.py" lang="python" />
  </example>

  <example>
    <text>
        Vyřešte znovu úlohu číslo 1, ale tentokrát použijte ASCII-formát P3.
    </text>
    <hint>
        Popravdě – můžete-li koukat na výstupní soubor hexadecimálně, tak se trojce bajtů kontrolují mnohem lépe tak než v této ASCII-podobě. Ale ať si potrénujete obě verze.
    </hint>
    <solution src="pnm.duha/2_ascii.py" lang="python" />
  </example>

  <example>
    <text>
        Zopakujte si úlohu 1 (tedy formát P6), ale tentokrát generujte jednobarevnou „duhu“ ve vybrané barvě. Zbylé dvě barvy nechte nastavené na 0.<br/>
        Ukázkový výstup: <img src="_files/duha/3.png" width="256" height="256" alt="ukázkový výstup duhy" align="center" />
    </text>
    <solution src="pnm.duha/3.py" lang="python" />
  </example>

  <example>
    <text>
        Zopakujte si úlohu 1 (tedy formát P6), ale tentokrát generujte jednobarevnou „duhu“ ve vybrané barvě, přičemž vhodně pozměňte i hodnoty zbývajích dvou komponent. Pohrajte si s různými nastaveními obou „vedlejších“ barev, ať prostudujete jejich vliv na výsledný obrázek.<br/>
        Ukázkový výstup: <img src="_files/duha/4.png" width="256" height="256" alt="ukázkový výstup duhy" align="center" />
    </text>
    <solution src="pnm.duha/4.py" lang="python" />
  </example>
  
  <example>
    <text>
        Zkuste nagenerovat dvě duhy ve stejné barvě přes sebe – jednu horizontálně, druhou vertikálně.<br/>
        Ukázkový výstup: <img src="_files/duha/5.png" width="128" height="128" alt="ukázkový výstup duhy" align="center" />
    </text>
    <hint>
        Jelikož asi budete v tomto případě výsledný obrázek spíše skládat pixel po pixelu (a ne po řádcích jako v předchozích příkladech), je rychlejší si data uložit bokem do vhodné datové struktury a teprve po jejím naplnění ji celou najednou zapsat na výstup. Tento přístup ukazuje varianta <em>b</em>.
    </hint>
    <solution src="pnm.duha/5a.py" lang="python" />
    <solution src="pnm.duha/5b.py" lang="python" />
  </example>
  
  <example>
    <text>
        Zopakujte si předchozí úlohu s dvěma duhami ve dvou směrech, ale tentokrát zkuste smíchat dohromady dvě různé barvy.<br/>
        Ukázkový výstup: <img src="_files/duha/6.png" width="256" height="256" alt="ukázkový výstup duhy" align="center" />
    </text>
    <hint>
        Stejný komentář jako u předchozího příkladu.
    </hint>
    <solution src="pnm.duha/6a.py" lang="python" />
    <solution src="pnm.duha/6b.py" lang="python" />
  </example>


</examples>
