Úkolem je implementovat 2D animaci plamene za použití vlastní spojité šumové funkce.
Ústní vysvětlení na přednášce a cvičení, příklady původní barevné funkce a výsledků - viz
tato stránka,
PDF prezentace
obsahující informace o šumových funkcích.
Při implementaci deterministických šumových funkcí můžete využít
soubor ověřených hashovacích funkcí z třídy RandomStatic.
Při implementaci této úlohy hraje klíčovou roli interface ITimeDependent - nastavuje se přes něj aktuální čas libovolnému objektu, který umí být závislý na čase. Podrobnosti viz tento návod. Protože se výpočty paralelizují, je potřeba vždy dodržovat re-entranci vašeho kódu. Standardně se to zajišťuje tak, že si každé vlákno naklonuje svou vlastní kopii dat, pokud nějaká data potřebujete (interface ITimeDependent). Detaily viz Animation.Clone() - každý objekt implementující interface ITimeDependent se musí umět naklonovat (tzv. "deep-copy" pro časově závislá data, data nezávislá na čase mohou být sdílena - "shallow-copy").
Ve zdrojovém souboru AnimationIF.cs modifikujte definici třídy class Animation
a přidejte implementaci všech vašich nových tříd (šumové fce apod.).
Pokud potřebuje animovaná obrazová funkce nějaká sdílená data,
uložte je do pomocného datového objektu data, který může být též
časově závislý.
Nastavte implicitní hodnoty rozlišení a délky animace na nějaké rozumné hodnoty
- do metody InitializeParams().
Musíte poslat zdrojový soubor AnimationIF.cs. Navíc mi napište, pro jaký časový interval máte data animace navržena. U této úlohy ocením, když vyrobíte a vystavíte video - viz dále.
Pokyny najdete v tomto návodu. Binárku ffmpeg pro Windows si můžete stáhnout např. zde. Vytvořené video někde vystavte nebo nahrajte na YouTube a pošlete mi na něj odkaz.
ukázky animací (pilotní implementace implementuje vzdalující se šachovnici)
Odevzdat do: 29. 4. 2018
Základ: 25 bodů (plamen, který se animuje v čase)
Visual Studio projekt: 063animation.
Modifikujte a odevzdejte soubor: AnimationIF.cs
Do funkce InitializeParams() zadejte své vlastní jméno!
Copyright (C) 2013-2018 J.Pelikán, last change: 2020-12-08 00:57:30 +0100 (Tue, 08 Dec 2020)