Úkolem je doplnit implementaci jednoduchého paprskového zobrazovače (Ray-casting) o množinové operace při výpočtu průsečíků paprsku se scénou. K dispozici máte kostru ray-castingu, ve které však mimo jiné chybí výpočet množinových operací na paprsku. Vaším úkolem je množinové operace doimplementovat.
Základem poslouží projekt 018raycasting z repository
grcis.
Je připravena aplikace, která v jednoduchém okně zobrazuje obrázek spočítaný
ray-castingem. Definice scény je v kódu, tu budete muset pro podrobné testování
Vaší implementace také měnit.
Pro doplnění Vaší implementace byl založen zdrojový soubor
RayCasting.cs, do něj budete psát všechny požadované doplňky
a nakonec mi ho odevzdáte.
Ray-Casting v C#: základní definice interface a tříd pro paprskové zobrazovací metody najdete v adresáři common. Abstraktnější definice (interface, default třídy) jsou obsaženy ve zdrojovém souboru RayCastingCommon.cs, jednoduché varianty implementací pak v souboru RayCastingBasic.cs (Váš kód bude některé tyto třídy doplňovat, tyto jsou zatím označeny partial).
Co modifikovat: soubor RayCasting.cs obsahuje definici třídy CSGInnerNode jako potomka InnerNode. Vaším úkolem je korektně implementovat metodu Intersect() respektující nastavenou množinovou operaci. Je rovněž třeba modifikovat definici scény (konstruktor RayScene), aby se množinové operace uplatnily a byly na obrázku vidět. Navrhnete-li nějakou zajímavější a komplikovanější scénu, dostanete body navíc.
TERMÍN: do 25. 3. 2012
BODY: 15 až 25 bodů (více bodů za hezčí scénu)
PROJEKT: 018raycasting
ZDROJOVÝ SOUBOR: RayCasting.cs
Copyright (C) 2011-2012 J.Pelikán,
last change: $Date: 2013-11-22 23:48:14 +0100 (Fri, 22 Nov 2013) $
Send comments/requests to
pepca.at.cgg.mff.cuni.cz