Úloha 063: Animace plamene ve 2D

Flames

Úkolem je implementovat 2D animaci plamene za použití vlastní spojité šumové funkce.

Náměty

Ú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.

Interface ITimeDependent

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").

Co modifikovat

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().

Co odevzdat

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.

Výroba video-souboru

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.

Animations ukázky animací (pilotní implementace implementuje vzdalující se šachovnici)

Termín

Odevzdat do: 29. 4. 2018

Body

Základ: 25 bodů (plamen, který se animuje v čase)

Projekt

Visual Studio projekt: 063animation.

Zdrojový soubor

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)