úloha 059: 3D graf funkce

Ú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


[Cvičení NPGR003]  [Návody k zápočtům v C#]  [Přednášky a semináře]  [Odkazy na demonstrace]

Valid XHTML 1.1 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