Úloha 119: Hashování pro šumové funkce

Úkolem je implementovat 2D šumové funkce používající externí hashovací funkce a otestovat množství hashovacích funkcí, které jsou populární v jinéch oborech (např. kryptografie, pseudonáhodné generátory).

Nápady

Můžete začít sadou starších (jednodušších) hashovacích funkcí implementovanou v třídě RandomStatic. Implemetujte s jejich pomocí univerzální deterministickou šumovou funkci.

Další hashovací fukce můžete hledat zde:
Cryptographic hash functions
Thomas Wang: Integer Hash Function
Bob Jenkins: Hash Functions and Block Ciphers
Inverse of a hash function
Chris Wellons: Blowpipe
Chris Wellons: Inspiration from Data-dependent Rotations
Chris Wellons: Prospecting for Hash Functions

Co modifikovat

Editujte class ImageFunction ze zdrojového souboru AnimationIF.cs. Do tohoto zdrojového souboru přidávejte nové hashovací funkce i šumový generátor. Tzv. obrazová funkce IImageFunction by měla počítat šumový obrázek na základě různých hashovacích funkcí. Ty by měly být rozumně použité, například pro inicializaci vstupní mřížky, na jejímž základě se šum generuje. Příklad takové funkce long H ( long a ):

// Returns grid value between 0.0 and 1.0
public double getGridPoint ( int x, int y )
{
  long hashIn = (long)x + 65536L * (long)y;
  long hashOut = H( hashIn ) & 0x7fffffffffffffffL;
  return hashOut / (double)0x7fffffffffffffffL;
}

Vaším úkolem by pak bylo implementovat úplnou obrazovou šumovou funkci. Použijte jednoduchou bilineární interpolaci a nějaké barevné schéma nebo můžete vynechat interpolaci a zobrazit výsledek jako bílý šum.

Jestliže bude vaše ImageFunction potřebovat nějaká další vstupní [sdílená] data, můžete je vložit do zvláštní třídy SupportData.
Nastavte počáteční rozlišení obrázku a časový interval na nějaké rozumné hodnoty – to se d2l8 ve funkci InitializeParams() (zeditujte zde též Vaše jméno).

Co odevzdat

Pošlete modifikovaný zdrojový soubor AnimationIF.cs.

Termín

Odevzdat do: 30. 6. 2019.

Body

Základ: 22 bodů (rozumná šumová funkce používající různé hashovací funkce),
8 dalších bodů: bonus za zajímavé/překvapivé výsledky a originální hashovací funkce.

Projekt

Visual Studio projekt: 063animation

Zdrojový soubor

Modifikujte a odevzdejte soubor: AnimationIF.cs
Ve funkci InitializeParams() zadejte své jméno!


Copyright (C) 2019 J.Pelikán, last change: 2020-05-16 23:04:24 +0200 (Sat, 16 May 2020)