Každý den můžeme být svědky úžasné rozmanitosti světa. Dokonce si lze díky vesmírným dalekohledům alespoň trochu představit složitost dalekého kosmu. A to všechno, od drolící se zdi u vrat k jádru červeného obra, od kůry borovice k vráskám kolem očí prý sestává z hlediska vědy z omezeného souboru prvků. Zkrátka a značně redukcionisticky, z atomů. I když klasický obraz dnes komplikují úvahy o temné energii, složených dimenzích a blánách, přirovnání platí přinejmenším na určité úrovni, tedy z pohledu atomů. Zdá se těžko pochopitelné, jak by tak složité scény mohly vznikat z takové jednoduchosti. Matematický obor známý pod názvem kombinatorika nabízí lákavou a přitom snadno přístupnou cestu alespoň k části této záhady. Z tohoto hlediska jsou zvláště zajímavé faktoriály.
Faktoriál je vyjádřen pomocí vykřičníku ve formě n!, kde n je kladné celé číslo a n! představuje součin všech kladných celých čísel menších nebo rovných n.
Například: 4! = 4 × 3 × 2 × 1 = 24.
Z důvodů, které si brzy ujasníme, je těžké kalkulovat faktoriály velkých čísel. Proto poukazuji na tabulku z Wikipedie:
n ------- n!
0 ------- 1
1 ------- 1
2 ------- 2
3 ------- 6
4 ------- 24
5 ------- 120
6 ------- 720
7 ------- 5040
8 ------- 40 320
9 ------- 362 880
10 ------ 3 628 800
15 ------ 1 307 674 368 000
20 ------ 2 432 902 008 176 640 000
25 ------ 15 511 210 043 330 985 984 000 000
50 ------ 3,041 409 32… × 1064
70 ------ 1,197 857 17… × 10100
100 ----- 9,332 621 544 4 × 10157
171 ----- 1,241 018 070 2 × 10309
450 ----- 1,733 368 73… × 101000
1000 ---- 4,023 872 600 8 × 102567
3249 ---- 6,412 337 68… × 1010000
25 206 --- 1,205 703 438… × 10100000
47 176 --- 8,448 573 149 5… × 10200001
Už z ní plyne, že faktoriál poměrně nízkého čísla 50!, tzn.:
To je obrovské číslo; řekl bych, že překvapivě obrovské vzhledem k přízemnímu charakteru čísla (50), z něhož je vygenerováno.
Faktoriál vyjadřuje mj. počet kombinací možných na základě určitého počtu odlišitelných věcí. Pokud máme 50 různých prvků, součástek, článků v podstatě asi čehokoli, lze z nich utvářet 50! (to velké číslo nahoře) jedinečných kombinací (ve smyslu pořadí).
Představte si ale podobným způsobem ručně vypočítat 1000!! Trvalo by to velmi dlouho.
Jak uvidíme v jednom z dalších dílů, ani běžná výpočetní technika nám nemusí být v této otázce moc užitečná, a to kvůli obrovským číslům, se kterými se tak velmi záhy setkáme.
Dnes chci ale především poukázat na to, jak lze na základě malého počtu prvků či věcí, které se dají mezi sebou kombinovat, a jednoduchých kalkulací docílit obrovských čísel.
Příště budu psát o tom, co to znamená pro obrazy a pro nás jako bytosti ve vesmíru.
Steganografie
31 March 2016
(Článek vyšel v únorovém čísle sborníku Reprezentace na březen 2016).
Steganografie je souhrnným označením metod utajení zpráv prostřednictvím jejich
ukrývání v jiné komunikaci mj. v obrazech či mezi daty digitálního obrazu. Tyto
techniky používají lidé, kteří potřebují informace tajně přenášet. Pozorovatel
použitého media by si neměl uvědomit, že utajená komunikace vůbec probíhá.
Podnikl jsem jednoduchý experiment se zapsáním informací do obrazových dat v
různých formátech. Nejprve jsem vytvořil obrázek s hladkou středně modrou výplní
o rozměrech 400 x 400 pixelů, abych na začátek pracoval s jednoduchým příkladem.
Vybraný segment obrazových dat lze vidět na obrazu dole:
Po každých 300 bajtech jsem zapsal (přepsáním dat) jméno „Poussin“ do obrazových
dat. Příklad, kde jsou vidět dvě instance, následuje:
Jak uvidíme na následujícím obrázku, dost se těmito zásahy změní výsledný obraz.
Nejde rozhodně v tomto případě mluvit o zdařeném utajení klíčů v datech. Spíš je
zajímavé jak moc a jak nerovnoměrně je obrázek změněn.
Poté jsem to zkusil s větším, složitějším obrazem, u kterého jsem doufal, že
rušení dat nebude tak evidentní. Vzal jsem si na mušku reprodukci díla malíře
Poussina. Po každých 10,000 bajtech jsem do dat souboru zapsal slovo „Poussin“.
Všimněme si, že zásahy do původních dat bylo v tomto případě pomálu a vyskytují
se velmi sporadicky, s velkou kvantou nezměnených dat mezi nimi.
Nicméně i v tomto případě je jasně vidět, že s daty bylo manipulováno.
Poté jsem to zkusil se stejným souborem, který jsem nejdřív uložil do formátu
TIFF. Jde o větší soubor o velikosti 1,32 MB. Předešlý soubor ve formátu JPEG
měří pouhých 127 kB, což umožňuje právě komprese. Proto, vzhledem k velikostnímu
rozdilu, jsem vkládal slovo „Poussin“ ne každých 10,000 bajtů, nýbrž
každých 100,000.
Nyní se dá mluvit o úspěchu, aspoň z hlediska běžného pozorovatele obrazu. Na
první pohled vypadá normálně, neporušeně. V takovém pozorovateli by asi nevznikl
dojem, že data byla lidskou rukou pozměněna.
Samozřejmě nejde o důkladné ukrytí vzkazu. Každý komu napadne použit hex-editoru
rychle zjistí, že se na mnoha místech souboru nachází jméno „Poussin“. Kdybychom
tento vzkaz opravdu chtěli důkladně ukrýt museli bychom sáhnout k některé z
šifrovacích technik. Dokážu si ale představit, že existují algoritmy, které tak
ukrýtá data umějí s větší či menší mírou úspěšností vystopovat.
Zde slouží vkládání jména malíře jen jako příklad ve smyslu hry. Jako povrchní
poznatek vyplývá z experimentu, že bitmapový formát se více hodí pro tyto
konkrétní jednoduché zásahy. Dá se předpokládat, že zasahují jen do dat na
úrovni jednotlivých pixelů, ale u formátu používající kompresi evidujeme
dalekosáhlejší změny obrazového výstupu.
JPEG
25 February 2016
(Článek vyšel v únorovém čísle sborníku Reprezentace na rok 2016).
Minulý měsíc jsem začal se souborem TIFF a postupně jsem ho přeměnil vyjmutím, vložením, smazáním a doplněním dat v prostředí hex-editoru.
Tento měsíc jsem podrobil podobnému procesu soubor typu JPEG. Dbal jsem na to, aby oba procesy byly opravdu co nejpodobnější a šlo porovnat rozdíly i podobnosti mezí tím, jak oba formáty pojímají problém organizace dat. Proto jsem úkony prováděl na pokud možno paralelních (korespondujících) místech v datovém segmentu každého souboru. Jestliže jsem například vyjmul data z TIFFu začínaje bajtem nacházejícím se v n-tých procentech datového segmentu, udělal jsem totéž i nyní. Soubor JPEG pracuje s komprimací, proto je výrazně menší (obsahuje méně textu, méně bajtů, informací) než obsáhlejší formát TIFF. Na první pohled jsou vidět vizuální rozdíly způsobené jeho změnou. Je zjevné, že JPEG zpracovává data víc v blocích, které také přesouvá laterálně. Vznikají rovněž kompresní artefakty čili šumy, které jsou pro tento formát typické. Zpozorujeme taky zvlášť v tomto případě značný úbytek detailů.
Datový formát JPEG vykazuje několik odlišností ve srovnání s TIFFem. Header je delší a obsahuje vše, co v TIFFu patří do IFD, nabízí jiné možnosti parametrizace, avšak zároveň jich nabízí méně. Můžeme smazat data, aniž bychom je nahradili jinými, jak to bylo nutné v minulém případě. Obvykle se objeví na dolním konci obrazového pole pixely šedé barvy v počtu korespondujícím s námi vyjmutými daty.
Proč mě tyto jevy zajímají? Zajímá mě jejich neznámost; skutečnost, že do struktury digitální každodennosti nevidíme, že má charakter záhady, která je však vytvořená lidskou vynalézavostí. Proniknout do ní přitom není tak těžké, jak by se zdálo. Taky se zajímám o to, jak je text schopen nést různé kódy a významy; text jako nástroj, či do jisté míry stroj. Konkrétnost a iluzivnost. Konstrukce z malých struktur. Zajímá mě, jak se z malých strukturálních objektů (čísla) dá postavit něco, co kvalitativně působí zcela jinak (obraz); tato přeměna je až magická, i když má zcela přirozené obdoby, jako například výstavbu hmoty z atomů.
Zajímá mě také falzifikovatelnost – konkrétně ta, která je tak typická pro moderní média a která je schopna už celkem dobře (ale nikoli dokonale) skrýt svoje stopy. Žijeme v době, kdy (nejen) jako laici čím dál obtížněji zjistíme, jakým způsobem obraz vznikal a jestli a jak bylo s ním manipulováno. Symptomatickým se z tohoto hlediska jeví zájem médií o kauzy týkající se fotografií upravených ve Photoshopu a problematika takových zásahů. Fotografie se proto paradoxně čím dál více blíží malbě, a to přinejmenším svou schopností aktivně manipulovat vlastní médium (data, pixely), aby mohly efektivněji nést nějaké sdělení, libovolný obsah. Zaujal mě moment, kdy pouhá změna čísla či písmenka v souboru změní něco v obraze a pro laika není snadné předpovědět co, ani jak. V neposlední řadě mě fascinuje dělat ručně, pomalu to, co počítač dělá algoritmicky, velmi rychle a v pozadí dění a způsobem, který pro uživatele není průhledný.
(Článek vyšel v lednovém čísle sborníku Reprezentace na rok 2016).
Digitální obrazy vidíme mnohokrát denně; principy, na nichž spočívá jejich stavba, však nejsou transparentní. Jejich vnitřní struktura je překvapivá, elegantně definovaná, někdy těžko pochopitelná, což se projeví zásahem do ní. Prezentuji tady vizuální rozklad obrazu ve formě TIFF provedený hex-editorem – programem, jehož pomocí lze přímo editovat data souboru. Datové struktury různých obrazových formátů se pochopitelně vzájemně liší. Nepoužíval jsem žádný komprimační algoritmus. Při manipulaci s formátem TIFF je důležité zachovat původní velikost souboru a metadatové “tagy”, tzv. IFD (Image File Directory – adresář obrazového souboru), musí vždy zůstat na původním místě (pokud nechcete přepsat parametry souboru). Jinak při jednoduché manipulaci vznikne neplatný soubor.
Digitální obrazové formáty obsahují datový segment či segmenty udávající parametry obrazu (například šířku, výšku, rozlišení, barevný prostor) a obrazová data samotná. Každý formát tento problém řeší trochu jiným způsobem. V TIFFu se na začátku souboru nachází header (hlavička souboru), pak následují obrazová data spolu s IFD, které mohou obsahovat širokou škálu informací o parametrech souboru. Umístění dat a IFD v tomto formátu je značně volné. IFD může být jeden, nebo jich může být více a mohou se nacházet na různých pozicích mezi obrazovými daty.
Hlavička o délce 8 bajtů udává formát (jedná se samozřejmě o TIFF), jeho endianitu (která stručně řečeno určuje pořadí bajtů) a přesnou lokaci prvního IFD, datového segmentu obsahujícího parametry. V našem konkrétním případě se obrazová data nacházejí mezi hlavičkou a IFD. IFD se pak nachází ke konci souboru, ale mohl by být umístěn v zásadě kdekoli. Pokud bych tedy smazal či přidal určitý "kus" obrazových dat, vznikl by neplatný soubor, neboť IFD by se již nenacházel na místě udaném v hlavičce. Program, který má obraz číst (sloveso číst je zde na místě, protože to, co vidíme následně dekódované jako obrazový soubor, je v podstatě soubor textový, obsahující parametry a pozice obrazových dat), by tak neměl přístup k parametrům z IFD (třeba do jaké výšky a šířky má obraz vykreslit).
Vzhledem k výše uvedenému, a aby nevznikl nezajímavý neplatný soubor, jsem na místo vyňatých dat vložil jednolitý datový blok sestávající z dostatečného množství bajtů hexidecimálních EE. Volba byla čistě nahodilá, cílem bylo pouze dosáhnout neutrální výplně. To jsou šedé lineární bloky na obrázcích.
Níže je uveden popis procesu vytvoření obrázků ve formě řady instrukcí. Nejdříve údaje o použitém souboru, pak popis jednotlivých kroků. Pojmem "adresa" je míněno, od které pozice, potažmo bajtu v souboru je akce prováděna (soubor má 154.832 bajtů). Uveden je také název výsledného obrazu.
Protože při posledním kroku kopírováním a vložením dat navíc by vznikl problém se změnou pozice IFD, smazal jsem odpovídající množství dat z “výplňkových” bloků, které vznikly vyjmutím dat v předešlých krocích bez jejich následného vložení (konkrétně 6285 bajtů z prvního, a 6284 z druhého bloku). Zachovalo se tak správné umístění IFD i požadovaná velikost souboru.
Příští měsíc uplatním obdobný proces na obraz ve formátu JPEG, a uvidíme v čem se liší tento formát.
Název zpracovaného souboru: Originál.tiff
Velikost souboru: 154.832 bajtů. Je to menší obraz, tím lépe se s ním pracuje.
Velikost hlavičky: 8 bajtů
Velikost obrazových dat: 151.434 bajtů
Velikost IFD: 3.390 bajtů
IFD začíná na adrese 151442
Instrukce:
Od adresy 6823 vyjmout 1665 bajtů: 1.tiff.
Vložit je na adrese 105860: 2.tiff.
Od adresy 55887 vyjmout 21807 bajtů: 3.tiff.
Vložit je na adrese 121004: 4.tiff.
Od adresy 142810 vyjmout 7118 bajtů: 5.tiff.
Vložit je na adrese 19392: 6.tiff.
Od adresy 19696 vyjmout 17110 bajtů: 7.tiff.
Od adresy 87688 vyjmout 1515 bajtů: 8.tiff.
Od adresy 76634 kopírovat 12569 bajtů
Vložit na adrese: 16060: 9.tiff.
V zemi spirál
20 June 2015
Vytvořil jsem program na vizualizaci komplexní roviny[1]. Je k dispozici [2] buď tady na separátní stránce, nebo hned dole přímo v okně blogu (verze se liší co do barev i možných souřadnic docílitelných klikem myší, souvisí to s technologii webových stránek, doporučuju spíš tu seperátní stránku pokud toužíte třeba po nakreslení kruhu pomocí násobení komplexních čísel). Začít s experimentováním se dá najížděním kurzoru do barevné plochy programu a několikanásobním kliknutím myší v blízkosti centrální kružnice:
ukaž moduly
ukaž spojnice
Pozice x:
Pozice y:
Pozice x součinu:
Pozice y součinu:
Vysvětlení funkcí
1. Komplexní plocha, výsek z komplexní roviny. Měří deset krát deset čísel. Její horizontální rozsah je od -5 do 5, a vertikální je od -5i do 5i.2. Osa imaginárních čísel.3. Osa reálných čísel.4. Jednotková kružnice (s poloměrem 1).5. Označte pro zobrazení modulů. Vychozí stav je nezobrazit je.6. Kreslit spojící čáru mezi body označující součiny. Vychozí stav je, aby se tak stalo.7. Tlačítko vymaže kresbu a může se začít od začátku.8. Pozice kurzoru myši, kde y je vertikální vzdálenost od počátku a x horizontální.9. Pozice součinu na rovině, kde x je jeho horizontální (reálná) část, a y je jeho vertikální (tzv. imaginární) část.
Práce s programem
Po prvním kliknutí myší se objeví bod na ploše prográmku a souřadnice jsou uloženy jako první činitel. Klikneme-li ještě jednou, objeví se červený bod, který se stane druhým činitelem. Zároveň se objeví třetí svetle modrý bod tam, kde se na komplexní rovině nachází součin obou cinitelů.
Pokaždé, když poté klikneme znovu do plochy, násobíme poslední hodnotu kalkulace o hodnotu bodu, kde jsme právně klikli. Výsledné body či součiny pospojí linka, spojnice (pokud ji nedeaktivujeme), aby bylo vidět souvislosti mezi opakovanými součiny.
Zajímavé úkazy i často ty nejpůsobivější figury vznikají z opakovaného použití stejného činitele, či-li když se nasadí první bod libovolně a jako druhý činitel je označeno další a pak se nehneme myší ale klikneme dál na stejném bodě. Tím pádem násobujeme stále stejným činitelem. Můžeme také kliknout někam do plochy poprvé a pak už vůbec nehnout myší, cimž prakticky umocňujeme počáteční bod (vznikají většinou spirály).
Komplexní rovinu můžeme rozdělit do čtyř oblastí, kvadrantů:
Jako krátkou okružní jízdu po zajímavostech komplexní roviny nabídnu v několika heslech ukázku toho co se stane, když se druhý z činitelů (červený bod) ocitá v různých situacích na ploše. Dost to ovlivňuje vzhled následného obrázku a zdá se, že druhý činitel, nikoliv ten první ovlivňujě to, jestli grafická křivka utvaří dostředivou či odstředivou spirálu, (přibližnou) kružnici či linku. Aby byly lépe vytušitelné zákonitosti násobení na komplexní rovině, budu od chvíle, kdy označím druhý (červený) činitel vždy klikat opakovaně na stejný bod. Jinak, kdybychom pokaždé zvolili jiný činitel (pokládaním červeného bodu jinam), bychom se sice mohli dostat součiny na libovolný bod roviny, pozor bychom ale museli dávat na neuvážené umístění, lehce se dostaneme mimo rozsah, který obsahuje okénko programu. Nicméně oblouk můžeme vždy časem vrátit do okénka opakováním kliknutím do prostoru uvnitř jednotkové kružnice.
Činitel v 1. kvadrantu
Když je druhý činitel v 1. kvadrantu dostáváme spirály, které se točí proti směru hodinových ručiček.
(0.65+0.875i) krát (0.925+0.525i) krát (0.925+0.525i) atd...
(-0.45+1.85i) krát (0.975+0.3i)) krát (0.975+0.3i) atd...
Činitel v 2. kvadrantu
Opakovaným kliknutím na druhý činitel, který se nachází v 2. kvadrantu, generujeme spirálovitě se rozpínající (nebo smršťující se) útvar, u kterého jsem pozoroval buď formy pěticípé nebo trojcípé hvězdy. Kde s druhým činitelem v 1. kvadrantu jsme dostávali hladké křivky přípomínající šnečí úlity, dráha spiraly nám teď skáče angulárně z kvadrantu do kvadrantu.
(0.95+0.825i) krát (-0.85+0.625i) krát (-0.85+0.625i) atd...
(0.725+1.25i) krát (-0.95+0.6i) krát (-0.95+0.6i) atd...
Činitel v 3. kvadrantu
Ani v tomto případě se spirála nerozvíjí pomalu, souvisle, body se nenacházejí v bezprostřední blízkosti svých sousedů, ale po každém násobění skáčou z jednoho kvadrantu do jiného, dělá takové takříkajíc ping pong. Odvíjí se ve směru hodinových ručiček.
(0.5+1.1i) krát (-0.8-0.75i) krát (-0.8-0.75i) atd...
(0.5+1.1i) krát (-0.8-0.775i) krát (-0.8-0.775i) atd...
Činitel v 4. kvadrantu
Při takovém umístění druhého činitele nám vznikají hladce vypadající spirály, které se odvíjí ve směru hodinových ručiček.
Podtrženo sečteno se dá říct, že při umístění druhého činitele do pravé poloviny komplexní roviny dostáváme takovou spirálu, kde mezi třemi sousedícími body se nalézá tupý úhel a při umístění do levé polovině vznikají spirály s ostrými úhly. Tím pádem ty první vynikají přiblížnou hladkostí jejich kontur, ty druhé jejich hranatostí. Na základě předešlých pozorování lze také usoudit, že když umístíme druhý činitel do horní poloviny roviny výsledná křivka se bude odvíjet proti směru hodin a když do dolní poloviny bude pohyb ve směru hodin.
(0.65+0.875i) krát (0.925+0.525i) krát (0.925+0.525i) atd...
(0.65+0.875i) krát (0.925+0.525i) krát (0.925+0.525i) atd...
Odstředivý pohyb
Kromě kvadrantů má komplexní rovina ještě jednu důležitou diferencující hranici:
jednotkovou kružnici. Záleží na tom, jestli činitel se nachází uvnitř či vně jí.
Když je druhý činitel vně kružnice, spirála se vydá do prostoru,
(-0.525+1.4i) krát (-1.05-0.15i) krát (-1.05-0.15i) atd...
(-0.525+1.55i) krát (-0.1-1.125i) krát (-0.1-1.125i) atd...
Dostředivý pohyb
Když je uvnitř, spirála se ponoří do většího a většího detailu, do hájemství malého.
(1.85+3.6i) krát (0.6+0.35i) krát (0.6+0.35i) atd...
(-0.025+1.775i) krát (0.75+0.65i) krát (0.75+0.65i) atd...
Točení do kruhu, vytváření kružnice
Přibližnou kružnici libovolného poloměru můžeme vytvořit použitím druhého činitele ležícího na jednotkové kružnici (kružnice na komplexní rovině s poloměrem 1). Na ní leží nekonečně mnoho takových čísel, neboť mezi možnými čísly se nachází nekonečno menších a menších možných intervalů; taková osa, která obsahuje čísla není v limitě granulární.
Umístěním činitele někde po kružníci lze vytvořit různé mnohoúhelníkové útvary, které se liší počtem vrcholků. Jeden z lapidárnejších je třeba pravoúhlý kosočtverec. Do jisté míry to souvisí také s metodou, kterou jsem si zvolil pro program. To, že je mezi body rovná čára znázorňuje to, že od jednoho součinu k tomu druhému po něm je to instantní skok, dostaneme se tam nějakým způsobem tou nejkratší cestou. Kdybych ale chtěl znázornit to, že modul, čili vzdálenost bodů od počátku v tomto případě zůstává neměnná, mohl bych místo toho sáhnout ke kruhovým obloukům. V něčem jsou skutečnější samotné body, a matematicky obhajovatelnější. Spojovací linie, či případně oblouky jsou praktickou pomůckou, která pomůže chápat souvislosti mezi součiny, jejich pohyb. Matematicky důležitý je různý počet bodů a to, že se rotuje pravidelným způsobem do kruhu.
V každém případě po dostatečném kvantu kliků vzniká uzavřený symetrický tvar, který se do
prostoru nerozpíná ani se nesmršťuje. Tím se přibližuje kružnici.
Z tohoto soudku se jakákoliv taková kružnice stává speciální případ spirály, kde
odstředivé a dostředivé síly jsou dokonalé vyvážené. Jinými slovy se kružnice
ocitá na hranici mezi dostředivostí a odstředivostí spirály.
(1.975+2.3i) krát (0.8+0.6i) krát (0.8+0.6i) atd...
(0+1i) krát (0+1i) krát (0+1i) atd...
Činitely na osách
Opakovaným násobováním číslem, které se nachází na reálné ose se součiny sešikují do linie. Nejznámější podoba tohoto chování je, když násobíme
jedno reálné číslo druhým také reálným. To se jen budeme pohybovat po reálné ose, jako kdyby byla kolej a my zrychlující se vlak. Umístění jinam dává jiné výsledky, mezi nimiž patří i pohyb přímo po imaginární ose. V každém případě vždy zřejmě vytvoří rovnou linii.
(0.25+0i) krát (1.45+0i) krát (1.45+0i) atd...
(0.8+0.95i) krát (1.2 + 0i) krát (1.2 + 0i) atd...
(0+1.35i) krát (1.2+0i) krát (1.2+0i) atd...
Když však násobíme imaginárním číslem, tzn. když druhý činitel je imaginární číslo, což znamená, že leží na svislé ose komplexní roviny[3], budeme zřejmě vždy generovat spirálovitou linii. Navíc bude zřejmě mít podobu pravoúhlé spirály (aspoň ve vizualizační technice, kterou používám tady, tj. kreslí se rovné čárky mezi součiny. Nicméně body samotné, nehledě na typ užité spojnice budou v tomto případě vždy takto naaranžované do pravoúhlých vztahů).
Zdá se, že spirála je symptomem imaginární osy, linie té reálné. Když je druhý činitel blízko reálné ose je následná křivka plošší, přibližuje se linii. Když ji víc ovlivní imaginární osa, víc se kroutí. Souhrou reálných a imaginárních sil vznikají všechny křivky, které lze zpozorovat na komplexní rovině.
(1.15+0i) krát (0+1.075i) krát (0+1.075i) atd...
(0.7+1.4i) krát (0+1.4i) krát (0+1.4i) atd...
Co se týká modulu, označuje vzdálenost komplexního čísla od počátku soustavy, kde se osy překřižují. Modul lze chápat mj. jako přeponu pravoúhlého trojúhelniku, jehož svislou odvěsnou tvoří imaginární část komplexního čísla (pozice y) a jehož ležatou odvěsnou tvoří reálná část čísla (pozice x). To přijde vhod, když chceme kalkulovat mnoho vlastnosti komplexních čísel, protože na pravoúhlé trojúhelníky lze vztahovat pythagorovu větu a tak jednoduše a elegantně vyřešit mnoho úloh s komplexními čísly. V podstatě se používá vlastnosti komplexních čísel, že jsou na rovině také vrcholkami pravoúhlých trojúhelníků.
Důvod, proč jsem se rozhodl pro zdánlivě tak malý úsek komplexní roviny (musíme si představit, že rovina pokračuje do nekonečna ve všech směrech) je jednak, že většina zajímavých dějů se děje v blízkosti jednotkové kružnice, a jednak kvůli technickým omezení, které klade javascript a počítač obecně. Spirály tvořeny součty s činitely, které leží dále od jednotkové kružnice velice rychle expandují a by bylo těžké je vizualizovat, nebo v podstatě bez nějaké funkce, která by nám umožňovalo zvětšovat záběr okénka či odzoomovat pohled na rovinu, by bylo vidět jen málo, jen krátky úsek spirály. Bylo by také těžší ukázat zvláštní vlastnosti jednotkové kružnice. Kliknutím blízko ní se dá v programu docílit těsně točené spirály; klikem přesně na ni dá se docílit mnohoúhelnikový výtvor přibližující se kružnici. Také hraje svoji roli to, že javascriptu, jazyku, ve kterém je program napsán, a snad v podstatě všem programovacím jazykům a hardwareu jsou vlastní omezení týkající se velikosti či délky čísel (týká se to jak velkých čísel, tak ta co mají hodně desetinných míst), která ještě umí zpracovat. Když zapnete vykresolování modulů, můžete sledovat jak po velkého množství kliků se přestanou vykreslit, což interpretuji v intencích, že se došlo k mezi zpracování čísel v javascriptu. Proto je třeba možnost odzoomování značně omezená, jelikož stejně by nám brzy došla čísla a nemohli bychom vykreslovat další body.
[1] Pro úvod do problematiky komplexních čísel viz starší příspěvek do blogu nebo článek wikipedie
[2] Program nefunguje v starších prohlížečích typu Internet Explorer 8, jelikož ty úplně nepodporují nové prvky HTML5. Mělo by fungovat
bezproblémově minimálně v prohlížečích Chrome, Firefox, Safari, za předpokladu, že není v nastavení vypnutý javascript.
[3] Na svislé ose se nacházejí imaginární čísla, na horizontální ta reálná a mezi nimi na rovině se nacházejí komplexní složená dvoudimenzionální čísla.