Úkolem je implementovat co nejhezčí, nejpraktičtější a nejpohodlnější nástroj na zkoumání průběhu reálných funkcí dvou proměnných. Měli byste zobrazit graf funkce jako plochu y = f(x,z) a umožnit uživateli si ho prohlížet ze všech stran, hrát si s definičním oborem, atd.
Vyhodnocování výrazu: aby mohl uživatel zadávat funkci dvou proměnných, používáme knihovnu NCalc, která je schopná opakovaně vyhodnocovat výraz, dosazovat za proměnné číselné hodnoty, apod. V naší aplikaci budeme označovat dvě volné proměnné ve výrazu x a y, i když v 3D prostoru budeme zobrazovat funkci y=y(x,z). Příklad použití knihovny NCalc k vyhodnocení výrazu najdete ve funkci RegenerateGraph() v souboru Graph.cs.
Základem poslouží projekt 059graph z repository
grcis.
Je připravena aplikace se základem pro OpenGL vykreslování grafu funkce, čtením
funkce zadávané uživatelem a možností interaktivního ovládání zobrazení.
Pro implementaci vašeho úkolu budete modifikovat předem založené
metody ve zdrojovém souboru Graph.cs:
Doporučuji dodržet koncepci z pilotní implementace: funkce RegenerateGraph() (jen v případě změny) realokuje nebo jenom naplní příslušné VBO buffery, jeden s atributy vrcholů, druhý obsahuje index-buffer. Funkce RenderScene() pak již žádné funkční hodnoty nepočítá, ale z připravených bufferů vykreslí obrázek.
Pohyb kamery: podobně jako v úloze 056 je možné naprogramovat nějaké chytřejší hýbání kamerou. Soubor Avatar.cs byl též přidán do projektu 059graph, můžete modifikovat a odevzdat i jej. Pro pohodlnější prohlížení grafu funkce je to nezbytnost! (nezapomeňte připojit aspoň stručný návod k použití)
Bonusy: nějaké zajímavé zobrazení (osvětlení, průhlednost, souřadné osy), pohodlné interaktivní zkoumání funkce, interaktivní změna definičního oboru, cokoli, co povede k elegantnější a pohodlnější práci s grafem..
TERMÍN: do 28. 2. 2013
BODY: 8 až 20 bodů
PROJEKT: 059graph
ZDROJOVÝ SOUBOR: Graph.cs, ovládání kamery v Avatar.cs
Copyright (C) 2013 J.Pelikán,
last change: $Date: 2014-10-03 15:44:39 +0200 (Fri, 03 Oct 2014) $
Send comments/requests to
pepca.at.cgg.mff.cuni.cz