Search
Webbův vesmírný dalekohled obíhá po halo orbitě a zaznamenává snímky blízkého i dalekého vesmíru zejména v infračerveném spektru. Odstartoval ze Země 25. prosince 2021 a po sestavení ve vesmíru začal posílat na Zemi fotografie. Data z dalekohledu jsou pro přenos na Zemi šifrována a pro správné zobrazení musí být opět dešifrována.
Šifrovací algoritmus je poměrně výpočtově náročný. Úkolem je napsat program, který dešifruje snímky získané z Webbova vesmírného dalekohledu a obrázky uloží ve formátu PPM pro správné zobrazení.
std::vector
Seznam metod, které musíte implementovat najdete v hlavičce telescop.hpp. Co jednotlivé metody mají dělat pak najdete v téže hlavičce, ve formátu Doxygen komentářů.
telescop.hpp
Archiv s testy, hlavičkou telescope.hpp a CMakeLists.txt najdete zde.
telescope.hpp
CMakeLists.txt
image
cmake-build-debug
Jeden nebo více .cpp souborů (obvykle telescope.cpp), které implementují funkce deklarované v souboru telescop.hpp tak, aby testy procházely a neztrácela se paměť. Při práci na úkolu soubor telescope.hpp neměňte.
.cpp
telescope.cpp
Obrázek je formátu PPM je v obecnosti dvourozměrné pole jednotlivých obrazových bodů. Pro dvourozměrné pole využíváme v úloze jednorozměrnou strukturu std::vector, ve které jsou řádky matice řazeny za sebou. Na začátku je potřeba dobře si rozmyslet práci s indexy jednorozměrného pole reprezentujícího dvourozměrnou matici. K tomu slouží Stage1, kde se pracuje s polem typu int. V následujících úrovních (Stage2 a Stage3) je pak využito pole typu unsigned char.
int
unsigned char
Doporučujeme postupně implementovat jednotlivé funkce definované v souboru telescop.hpp. Požadovaná funkčnost je popsána v komentářích. Současně jsou pro každou funkci definovány testy, které ověřují správnou funkčnost definovaných funkcí. Testy lze spouštět I samostatně podle toho, kterou část úlohy zrovna řešíte.
Většina testů ukládá výsledek do souboru. Ten najdete ve složce, do níž projekt překládáte a kde ho spouštíte. Vykreslené obrázky vám mohou být nápomocné při řešení úlohy.
Doporučujeme úlohu řešit postupně, jak jsou jednotlivé funkce v zadání uvedeny. Každá další funkce předpokládá správnou funkčnost předchozích funkcí. Je možné některé funkce neodevzdat, vzhledem k jejich návaznosti se ale zbytečně připravujete o body.