Úkolem je implementovat algoritmus rasterizace subdivision křivky podle tzv Chaikinova schématu. Podle vstupního řídícího polygonu (posloupnost řídících bodů v rovině) je potřeba nakreslit do rastrového obrázku křivku s přesností na jeden pixel.
Kromě implementace vykreslovacího algoritmu nakreslete pomocí těchto křivek nějaký zajímavý (a/nebo pěkný) obrázek, abyste demonstrovali funkčnost vaší implementace. Je vhodné, abyste použili jak otevřené (P0 <> PN), tak uzavřené (P0 = PN) křivky.
Jako Základ poslouží projekt 069subdivision z repository grcis. Je připravena jednoduchá aplikace, ve které se pro vykreslení výsledného obrázku zavolá vaše metoda Subdivision.TestImage() pro dané rozlišení výsledné bitmapy.
Rasterizace subdivision křivky: ve zdrojovém souboru Subdivision.cs najdete třídu class Subdivision. Ta má obsahovat implementaci rasterizace křivek. Vykreslení jedné křivky (dané otevřenou či uzavřenou posloupností řídících bodů) má za úkol metoda Subdivision.DrawCurve( Bitmap output, List<Vector2d> P, Color col ). Pole List<Vector2d> P obsahuje posloupnost N+1 řídících bodů (N >= 1), která může být otevřená (P[0] <> P[N]) nebo uzavřená (P[0] = P[N]). Metoda musí křivku vykreslit do dané bitmapy tenkou čárou zadané barvy.
Pokud implementujete některé obecnější schéma, použijte nastavení parametru Subdivision.SetParam( string name, value ). Lze například experimentovat s koeficientem dělení (u originálního Chaikina se rovná 1/4) nebo symetrií dělicího schématu (originál je symetrický). V případě implementace některého takového rozšíření nezapomeňte doplnit stručný návod!
Výstupní obrázek kreslíte do předem alokované bitmapy out Bitmap output. Využijte celý rozměr obrázku! Uživatelem zadaný textový parametr můžete použít k libovolnému řízení obsahu testovacího obrázku.
Zdroje informací jsou shrnuty zde:
Chaikinův
algoritmus
Brian
Curless: Subdivision curves and surfaces
Tony DeRose's (PIXAR) Subdivision Video
Odevzdat do: 28. 12. 2014
Základ: 12 bodů (základní algoritmus + demo),
bonusy za zobecnění nebo zvlášť pěkný testovací obrázek.
Visual Studio 2010 projekt: 069subdivision
Modifikujte a odevzdejte soubor: Subdivision.cs
Do komentáře na první řádce napište své jméno!
Nezapomeňte popsat případné parametry a upozornit na zobecnění, pokud ho implementujete.
Copyright (C) 2013-2014 J.Pelikán, last change: 2019-05-09 17:52:59 +0200 (Thu, 09 May 2019)