Sem vložte zadání Vaší práce.



Podobné dokumenty
EU peníze školám - OP VK oblast podpory 1.4 s názvem Zlepšení podmínek pro vzdělávání na základních školách

a) Charakteristická je pro ni triola zpívaná slabikami cha-cha-cha. d) Postavení: šachovitě po sále, pánové čelem k pódiu

SEZNÁMENÍ S PROGRAMEM

Program Montážky manuál uživatele

Parametrizace, harmonogram

MANUÁL K OBSLUZE REDAKČNÍHO SYSTÉMU / wordpress

Jive. Základní principy:

Interaktivní mapy ÚAP Uživatelská příručka

TouchGuard Online pochůzkový systém

Office podrobný průvodce. Tomáš Šimek

Waltz. Používané zkratky

TECHNICKÉ POŽADAVKY PORTÁLU

POHÁR TŠ MAESTRO 2014

Uživatelem definované požadavky a parametry systému

LuxRiot uživatelský manuál verze Uživatelský manuál Verze , Stasa s.r.o.,pokorného 14, , PRAHA

universální monitorovací program

Stabilita v procesním průmyslu

Tabulkové processory MS Excel (OpenOffice Calc)

Editor pro vizualizaci interiérů bytů

UZ modul VVISION poslední změna

Technologie počítačových sítí 1. cvičení

Obsah. Seznámení s prostředím Excelu. Poděkování 25 O přiloženém CD 26 Co je na CD 26 Použití CD 26 Systémové požadavky 26 Podpora 27

Fotogalerie pro redakční systém Marwel Obscura v. 2.0

Návod k administraci e-learningové platformy

Obsah. Položkování 1: Prefix dřívějších osamocených dílů se zachovává...23 Položkování 2: Editace předběžných čísel...23

3D Vizualizace muzea vojenské výzbroje

Programovací stanice itnc 530

NOVÁ VERZE OBD A JEJÍ VYUŽÍVÁNÍ Ing. Martina Valášková

MS PowerPoint Každá prezentace by se měla skládat ze tří klíčových částí: 1. Obsah

Obsluha měřicích zařízení kontaktní metody

Helios RED a Internetový obchod

Rozdílová dokumentace k ovládání IS KARAT.net

Word podrobný průvodce. Tomáš Šimek

OBSAH. ÚVOD...5 O Advance CADu...5 Kde nalézt informace...5 Použitím Online nápovědy...5. INSTALACE...6 Systémové požadavky...6 Začátek instalace...

Popis postupu při zpracování atletických závodů dle programu ATLETICKÁ KANCELÁŘ ( Manuál II.část )

TVORBA VÝROBNÍ DOKUMENTACE

Aplikované úlohy Solid Edge

Hydroprojekt CZ a.s. WINPLAN systém programů pro projektování vodohospodářských liniových staveb. HYDRONet 3. Modul EDITOR STYLU

Animované modely šroubových ploch

TECHNICKÉ PREZENTACE

Úvod...12 Součásti aplikace Použité konvence... 13

Metodika. Oznámení o vykonávání působností v agendě ve smyslu zákona č. 111/2009. Sb., o základních registrech. Verze 1.6

Word 2007 Word 2007 egon. Spuštění, vzhled, zobrazení dokumentu

Josef Pecinovský PowerPoint 2007

Manuál administrátora FMS...2

Program MediaLib. Program MediaLib slouží pro automatické skládání reklamních spotů do delších smyček.

Naučit se, jak co nejsnadněji přejít od verze TopoLu pro Windows k verzi TopoL xt. Cílem není vysvětlení všech možností programu.

Obsah. 1.1 Úvod do práce s autorským nástrojem ProAuthor 4

Uživatelská příručka pro program

VY_32_INOVACE_HV.DF.7.03

Práce s velkými sestavami

Naučte se víc... Metodická příručka pro školy k aplikaci Microsoft Office Access 2007

ÚVOD 3 SEZNÁMENÍ SE SYSTÉMEM 4

Uživatelská příručka

KONFIGURACE SILNIČNÍCH KŘIŽOVATEK

Manuál k aplikaci SDO PILOT v.0.2

33 Uživatelé asistence

Obsah. Obsah. Úvod Spuštění programu Pracovní prostředí Vytvoření a otevření dokumentu Kreslení objektů...

Feuittova notace snadno a rychle lekce 1

Rámcový manuál pro práci s programem TopoL pro Windows

UniLog-D. v1.01 návod k obsluze software. Strana 1

Robotický stolní fotbal

7. Nástroje. 7.1 Pravopis. 7.2 Jazyk. Kapitola 7: Nástroje 47. Kontrola pravopisu

VYUŽITÍ KNIHOVNY SWING PROGRAMOVACÍHO JAZYKU JAVA PŘI TVORBĚ UŽIVATELSKÉHO ROZHRANÍ SYSTÉMU "HOST PC - TARGET PC" PRO ŘÍZENÍ POLOVODIČOVÝCH MĚNIČŮ

Po nastudování této kapitoly byste měli být schopni:

MODELOVÁNÍ V INVENTORU CV

TDS-TECHNIK 13.1 pro AutoCAD LT

Ostatní portálové aplikace

DUM 01 téma: Obecné vlastnosti tabulkového editoru, rozsah, zápis do buňky, klávesové zkratky

VYTVÁŘENÍ A POUŽITÍ VZDĚLÁVACÍCH MODULŮ

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA

Novinky verze 5.4x programu PRO Ecru by Ecru Software

Kubatury, hydraulika vodní toky 4

Sestavy dlaždic. Příprava dlaždic pro definici sestavy

Obsah. Začínáme Viditelné součásti programu Simulace. WOP Menu CNC řízení. CNC Programy. Exec. Grafické okno. Strojní panel. 3D Model.

spsks.cz Část druhá - Praxe Technologie řízení robotického ramena Zpracováno v rámci projektu CZ.1.07/3,2, 10/ financovaného z fondů EU

Ostatní portálové aplikace

Část III - Disciplíny

Metodika Portálu pohledávek ve vztahu k uživateli

Základní ovládání aplikace

1. Dříve než začneme Trocha historie nikoho nezabije Co budete potřebovat Microsoft versus zbytek světa...

Metodika. Architecture First. Rudolf Pecinovský

36 Elektronické knihy

M I S Y S - W E B. Intranet řešení systému MISYS. Verze Příručka uživatele

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jiří Haňáček [ÚLOHA 34 ŘEZY]

Konečný automat. Jan Kybic.

AUTORSKÉ PROHLÁŠENÍ. Souhlasím s umístěním závěrečné práce na webu ČUDK a s jejím využitím pro studijní účely. Kroměříž, duben 2007.

VYTVÁŘENÍ OBSAHU KURZŮ

Mobilní aplikace Novell Filr Stručný úvod

CS WAVE Virtuální pracovní stůl svařování Malá verze Manuál uživatele

Modul ročních zpráv o výsledcích finančních kontrol

Modul Číselníky MTJ Service, s.r.o.

TVORBA VÝROBNÍ DOKUMENTACE CV

Střední škola informačních technologií a sociální péče, Brno, Purkyňova 97. Vybrané části Excelu. Ing. Petr Adamec

Propojení systému MICROPEL a inteligentní elektroinstalace ABB Ego-n

DATA ARTICLE. AiP Beroun s.r.o.

Uživatelská příručka + základní informace o IS o ISVS

l: I. l Tento projekt je spolufinancován Evropskou unií a státním rozpočtem České republiky.

časopis pro moderní konstruktéry Autodesk Inventor 11 AutoCAD Mechanical 2007 Tipy a triky Systém správy dokumentu 1/2006

Lekce 03 Prostředí programu SCRATCH

Transkript:

Sem vložte zadání Vaší práce.

České vysoké učení technické v Praze Fakulta informačních technologií Katedra teoretické informatiky Bakalářská práce Simulace pohybu tanečního páru po parketu Jan Karafiát Vedoucí práce: Ing. Jiří Kašpar 13. května 2014

Poděkování Rád bych poděkoval svému vedoucímu bakalářské práce Ing. Jiřímu Kašparovi za odborné vedení, cenné rady, věcné připomínky, vstřícnost a možnost častých konzultací. Také děkuji své rodině za podporu po celou dobu studia a při psaní této práce.

Prohlášení Prohlašuji, že jsem předloženou práci vypracoval samostatně a že jsem uvedl veškeré použité informační zdroje v souladu s Metodickým pokynem o etické přípravě vysokoškolských závěrečných prací. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona, ve znění pozdějších předpisů, zejména skutečnost, že České vysoké učení technické v Praze má právo na uzavření licenční smlouvy o užití této práce jako školního díla podle 60 odst. 1 autorského zákona. V Praze dne 13. května 2014.....................

České vysoké učení technické v Praze Fakulta informačních technologií c 2014 Jan Karafiát. Všechna práva vyhrazena. Tato práce vznikla jako školní dílo na Českém vysokém učení technickém v Praze, Fakultě informačních technologií. Práce je chráněna právními předpisy a mezinárodními úmluvami o právu autorském a právech souvisejících s právem autorským. K jejímu užití, s výjimkou bezúplatných zákonných licencí, je nezbytný souhlas autora. Odkaz na tuto práci Karafiát, Jan. Simulace pohybu tanečního páru po parketu. Bakalářská práce. Praha: České vysoké učení technické v Praze, Fakulta informačních technologií, 2014.

Abstract The aim of this work is an editor for dance steps of couple dances creation. The editor can create, edit and subsequently animate created dance or partial sequences. An attributed finite state automaton is used for formal description of dance steps for a dancer. Keywords regular grammar, attributed grammar, attributed finite state automaton, simulation, animation, dance step, dance steps editor Abstrakt Cílem této práce je vytvořit editor tanečních kroků pro párové tance. Výsledný editor umožňuje vytváření, editaci a následnou animaci vytvořeného tance či dílčích sekvencí. Taneční kroky tanečníka jsou popsány atributovaným konečným automatem. Klíčová slova regulární gramatika, atributová gramatika, atributový konečný automat, simulace, animace, taneční krok, editor tanečních kroků ix

Obsah Úvod 1 1 Analýza 3 1.1 Existující řešení......................... 3 1.2 Co je tanec........................... 7 1.3 Rozbor zadání.......................... 10 2 Návrh formálního modelu tance 15 2.1 Užití konečného automatu................... 15 2.2 Vstupní abeceda automatu................... 16 2.3 Stavy automatu......................... 23 2.4 Gramatika pro generování kroku................ 23 3 Implementace 27 3.1 Zvolené technologie....................... 27 3.2 Definice postavení........................ 27 3.3 Práce s editorem........................ 28 3.4 Výpočet trajektorie kroku................... 33 3.5 Export obrázků a animování tanečního skriptu........ 33 3.6 Hudba.............................. 34 3.7 Definiční soubor tanečního skriptu a parser.......... 35 3.8 Validace tanečního skriptu................... 38 3.9 Návrhová rozhodnutí...................... 38 4 Testování 41 4.1 Základní waltzová sestava................... 41 4.2 Spinová otáčka ve waltzu.................... 41 xi

4.3 Shrnutí testování........................ 44 Závěr 47 Literatura 49 A Syntaxe externí reprezentace tanečního skriptu 51 B Ovládání editoru 55 B.1 Základní ovládání........................ 55 B.2 Editační plocha......................... 56 B.3 Vytvoření a editace kroku................... 56 B.4 Sekvence............................. 57 B.5 Postavení tanečního páru.................... 58 B.6 Práce se souborem....................... 59 C Obsah přiloženého CD 61 xii

Seznam obrázků 1.1 Příklad popisu waltzové otáčky v Labanově notaci........ 4 1.2 Příklad záznamu pohybu v Beneshově notaci........... 5 2.1 Zobrazení vztažných bodů nohy.................. 17 2.2 Vzdálenost nohou tanečníka.................... 19 2.3 Směr kroku............................. 20 2.4 Rotace krokové nohy........................ 21 2.5 Rotace stojné nohy a dotočení................... 21 2.6 Výsledný konečný automat..................... 24 3.1 Grafické rozhraní.......................... 29 4.1 Waltzová sestava 1. část...................... 42 4.2 Waltzová sestava 2. část...................... 43 4.3 Spinová otáčka 1. část....................... 45 4.4 Spinová otáčka 2. část....................... 46 xiii

Seznam tabulek 1.1 Hudební značení pro jednotlivé standardní tance......... 8 2.1 Přehled atributů vstupních symbolů a jejich význam...... 16 2.2 Přehled atributů stavů automatu a jejich význam........ 24 2.3 Význam terminálních symbolů gramatiky............. 24 2.4 Sémantická pravidla pro výpočet pozic nohou tanečníka.... 26 3.1 Klíčová slova definičního souboru................. 35 xv

Úvod Počítačové programy stále více ovlivňují všechny disciplíny lidské činnosti. Přináší větší přesnost, eliminaci chyb lidí nebo automatizaci určitých úkonů. Umělá inteligence v logických počítačových hrách, např. v šachách, dokáže porazit téměř všechny lidské protivníky zejména kvůli schopnosti rychlé a hluboké analýzy nejlepšího tahu. Elektronický systém monitorující dopady míčů v tenise a kriketu, zvaný jestřábí oko, je schopen na základě fyzikálního modelu herního objektu simulovat a vyhodnotit jeho pohyb. Simulování různých jevů se užívá jako rychlý a snadno dostupný způsob k dosažení výsledků. Namátkou lze jmenovat výzkum nových materiálů, který se díky simulacím podstatně zlevnil, nebo výzkum aerodynamických vlastností různých tvarů karoserií automobilů. Nemalý význam zastávají simulace také v oblasti sportu. Nafilmování a následné zobrazení jednotlivých úkonů sportovce vede např. k přesněji provedeným záběrům plavce či lepšímu načasování odrazu při skocích na lyžích. Výhod simulace lze však využít také opačně. Při vytvoření modelu daného pohybu a jeho vizualizaci lze urychlit osvojení pohybu a předejít tak naučení se špatných pohybových stereotypů. Právě možnost definovat jednotlivé kroky, ty spojovat do sekvencí kroků a následně vizualizovat, by měla usnadnit lidem naučit se tančit, což je prvním z cílů této bakalářské práce. Druhým cílem pak je praktické ověření teorie možnosti popsat tanec tanečního páru pomocí konečného atributovaného automatu. 1

Kapitola 1 Analýza 1.1 Existující řešení Vzhledem k náplni této bakalářské práce, kdy je nejdříve třeba vyvinout aparát pro popis tanečních kroků a ten následně užít při tvorbě editoru, dělím i analýzu existujících řešení na část o tanečních notacích a část o editorech pohybů lidského těla. 1.1.1 Notace popisu tance Prvním z úkolů v této práci je navržení vhodného způsobu zaznamenání pohybů nohou tanečního páru s využitím atributovaného konečného automatu. To však není jediný možný způsob, jakým lze pohyby lidského těla zaznamenat. Mezi světově nejznámější způsoby patří Labanova notace a Beneshova notace. 1.1.1.1 Labanova notace Dle [3] je Labanova notace (originálně Labanotation) systém pro analýzu a zaznamenání lidského pohybu, poprvé publikován roku 1928 Maďarem Rudolfem von Labanem. Systém byl následně rozvíjen mnoha dalšími lidmi, z čehož vznikly notace, které se od původní lehce odlišují. Labanova notace není spjata s jedním konkrétním stylem tance, ale je navržena tak, aby dokázala spolehlivě popsat jakýkoli lidský pohyb. Pohyby jednotlivých částí lidského těla (hlava, trup, ruce, nohy) se zaznamenávají do samostatných sloupců, části rukou a nohou se označují unikátním identifikátorem, jejich pohyby jsou značeny velice podobně 3

1. Analýza Obrázek 1.1: Příklad popisu waltzové otáčky v Labanově notaci. Obrázek převzat z [15]. tomu, jak je lidské oko zaznamená. Zaznamenat lze také dynamiku každého jednotlivého pohybu, umístění v čase a v prostoru. Jednotlivé části zapisované sekvence pohybů se zapisují pod sebe a výsledná sekvence se interpretuje zdola nahoru. Možnost popisu waltzové otáčky touto notací demonstruje obrázek 1.1. Labanova notace se využívá také například při popisu pohybu robotů. 1.1.1.2 Beneshova notace Beneshova notace (originálně Benesh movement notation) je druhý významný systém pro zaznamenání lidského pohybu. Dle [14] byla tato notace vyvinuta Rudolfem a Joanem Beneshovými a poprvé publikována 4

1.1. Existující řešení Obrázek 1.2: Příklad záznamu pohybu v Beneshově notaci. Obrázek převzat z [13]. v roce 1956. Přestože vychází z popisu pohybu baletních tanečníků, našla si uplatnění např. i v medicíně. Zápis pohybu v Beneshově notaci připomíná zápis not do notové osnovy. Osnova se skládá z pěti vodorovných linek a dělí se na jednotlivé rámce svislými čarami. Jednotlivé informace o pohybu se zapisují na příslušné linky osnovy a následně se čtou zleva doprava a shora dolů. Způsob záznamu Beneshovy notace demonstruje obrázek 1.2. 1.1.1.3 Bezkontextová gramatika pro foxtrot O popis tance formální gramatikou se zasloužil Don Herbison-Evans [5], který vyvinul bezkontextovou gramatiku pro popis tanečních variací slowfoxtrotu. Gramatika obsahuje terminální symboly pro popis přesně definovaného kroku. Každý terminál je speciálně definován pro unikátní konfiguraci zahrnující nohu, rychlost pohybu, točení nohy a směr kroku. Tanec popisuje pouze pro mužské kroky, k nimž předpokládá inverzní ženské kroky, a klade mnohá omezení. Gramatika očekává čtyřdobé takty, které se po osmi sdružují do frází. Každou frázi musí začínat muž krokem levou nohou, přičemž se nohy následně střídají. 1.1.1.4 Shrnutí dostupných metod popisu Labanova a Beneshova notace jsou natolik robustní systémy pro popis pohybů lidského těla, že jejich užití pro tuto práci by bylo zbytečně komplikované. Bezkontextová gramatika pro foxtrot je naopak systém plný různých omezení, které využití v této práci taktéž brání. 5

1. Analýza 1.1.2 Programy pro záznam a vizualizaci pohybů lidského těla Editorů pro záznam a vizualizaci pohybů lidského těla existuje dle [11] několik, převážně spojené s notacemi uvedeny v 1.1.1. Kromě nich lze nalézt také editor zaměřený na taneční kroky. 1.1.2.1 Editory Labanovy notace Pro Labanovu notaci existuje několik editorů. Prvním z nich je editor LED/Lintel [6]. Tento editor je zaměřený na operační systémy Windows. Umožňuje záznam notace pomocí dostupných symbolů definovaného značení Labanovy notace. Následně je schopen záznam rekonstruovat do 3D podoby. Dalším z editorů je LabanWriter [16]. Tento editor funguje pod operačními systémy Macintosh, čímž je pro mě nemožné vyzkoušet ho. Dle popisu nicméně umožňuje taktéž zápis notace dle definovaného značení. Dalším z editorů je LabanPad [4], který stejně jako předchozí editory umožňuje pouze záznam dané notace. Určený je pro přístroje PDA. Posledním z editorů této notace je Calaban [17]. Tento program je určen pro operační systémy MS Windows 98 a vyšší jako plugin pro AutoCad. Vyvíjený je University of Birmingham. 1.1.2.2 Benesh Notation Editor Editor pro Beneshovu notaci není volně dostupný, tudíž je nemožné jej vyzkoušet. Z popisu uvedeného v [14] lze však zjistit, že editor je dostupný taktéž pouze pro operační systémy řady Microsoft a umožňuje pouze záznam notace, nikoli její vytváření na základě modelování pohybů lidského těla. 1.1.2.3 Editor dance Zaměřením nejpodobnější editor je uveden v [1]. Tento editor ve webové verzi umožňuje animovat připravené taneční variace, neumožňuje je však měnit ani vytvářet nové. Problémem je také závislost na platformě Microsoft Silverlight, což znemožňuje provozování editoru na operačních systémech, pro které není tato technologie dostupná. Program je dostupný 6

1.2. Co je tanec také pro instalaci na operačních systémech řady Microsoft. V této verzi již editor vytváření kroků umožňuje. Také obsahuje mnoho různých voleb, díky nimž se jeho ovládání stává velmi komplikovaným a práce s ním nepřehledná. Editor také poměrně překvapivě umožňuje vytvoření posuvného kroku tanečníka, ve kterém se obě jeho nohy pohybují po parketě zároveň. 1.1.2.4 Shrnutí programů pro záznam pohybů lidského těla Editory jednotlivých notací neumožňují vytváření notace na základě editace jednotlivých částí lidského těla, ač některé z nich tento model ze zadané notace nakonec vytvoří. Omezení editoru tance jsem uvedl již v příslušném odstavci 1.1.2.3. Za největší problém považuji platformní závislost, komplikované ovládání a možnost vytvoření reálně neuskutečnitelného kroku. 1.2 Co je tanec Každý tanečník na světě si pod pojmem tanec představí něco jiného už jen proto, že existuje mnoho různých stylů tance. Tančit může jednotlivec, pár nebo větší skupina jednotlivců či párů, stejně jako mohou tančit tance společenské nebo např. balet či breakdance. Tato práce má za úkol formalizovat a vizualizovat pohyb jednoho tanečního páru, tančícího společenské tance, po parketu. Společenské tance se primárně dělí na standardní (Waltz, Tango, Valčík, Slowfoxtrot a Quickstep) a tance latinskoamerické (Samba, Chacha, Rumba, Paso doble a Jive). Jak standardní, tak i latinskoamerické tance, se dělí ještě na podskupiny dle původu, délky hudebního taktu, charakteristického průběhu pohybu či definovaných postavení chodidel tanečníků. Na všechny tyto tance lze však zjednodušeně pohlížet jako na sekvence kroků tanečníka a tanečnice, které spolu určitým způsobem korespondují a jsou zasazené v hudbě. 1.2.1 Hudba v tanci Ve společenských tancích má hudba zásadní význam. Na rozdíl od jiných sportů neslouží pouze k podkreslení atmosféry, ale každý jednotlivý tanec na ní plně závisí. Hudba pro každý tanec má jednoznačně definovány vlastnosti 7

1. Analýza Tabulka 1.1: Hudební značení pro jednotlivé standardní tance Tanec/takt Značená doba Délka doby v taktu Poměr při užití & Waltz 1 1 1:1 3/4 takt 2 a 3 analogicky Tango S 1 3:1 4/4 takt Q 1/2 1:1 Valčík 1 1 1:1 3/4 takt 2 a 3 analogicky Slowfoxtrot S 2 3:1 4/4 takt Q 1 1:1 Quickstep S 2 3:1 4/4 takt Q 1 1:1 délka taktu, počet dob v taktu, interval počtu taktů za minutu a důrazné doby. Zároveň lze pro každý tanec definovat základní rytmus. Pro jednotlivé tance se liší zvyklost zápisu hudby při záznamu svázání kroků a hudby. Kromě jednotlivých hlavních dob se pro zjemnění členění hudby užívá symbol &. Užití tohoto symbolu neznamená posun v hudbě do další doby, ale dělí dobu předcházející na dvě části definovaným poměrem, který se pro jednotlivé tance a délky dob liší, jak ilustruje tabulka 1.1. 1.2.1.1 Hudební fráze Hudební fráze je logický celek hudby, který lze rozpoznat zpravidla důrazem jednotlivých dob. V taneční hudbě se nejčastěji vyskytují fráze po dvou, čtyřech a osmi hudebních taktech. 1.2.2 Definice základních tanečních pojmů V této části zadefinuji několik zavedených tanečních pojmů, se kterými budu nadále při návrhu a tvorbě editoru pracovat. Při definicích vycházím ze zavedených tanečních pojmů podle [8]. 1.2.2.1 Stojná noha Stojná noha je taková noha tanečníka, na které v daném okamžiku spočívá váha těla tanečníka. 8

1.2. Co je tanec 1.2.2.2 Volná noha Volná noha, též noha kroková, je noha v daném okamžiku bez váhy a je s ní tudíž možné posunovat po parketu. 1.2.2.3 Postavení tanečního páru Postavení tanečního páru je aktuální vzájemná konfigurace obou nohou tanečníka a obou nohou tanečnice, tj. jejich souřadnice a natočení. 1.2.2.4 Otáčka Otáčka je otočení (obrat) těla kolem svislé osy. 1.2.2.5 Pivota Pivota je druh otáčky vpravo nebo vlevo, při které jsou chodidla tanečníka stále ve stejné vzdálenosti. Ta se mění až po skončení točení. 1.2.2.6 Přísun Přísun je přisunutí volné nohy ke stojné noze, přičemž dochází k přenesení váhy. 1.2.2.7 Přítah Přítah je přisunutí volné nohy ke stojné noze, přičemž nedochází k přenesení váhy. 1.2.2.8 Nášlap Nášlap definuje část chodidla, která je v kontaktu s parketem. V literatuře nášlap nabývá následujících hodnot: Špička Nášlap na špičku chodidla, zároveň v sobě zahrnuje význam nášlapu na bříško chodidla. Bříško Nášlap na bříško chodidla se využívá v tangu ve významu nášlapu na špičku. 9

1. Analýza Chodidlo ploše Celé chodidlo tanečníka je v kontaktu s parketem. Vnitřní hrana Pata Nášlap na celou vnitřní hranu chodidla. Nášlap na patu. Vzhledem k rozlišovací schopnosti editoru nebudu využívat všechny dostupné hodnoty, ale v návrhu modelu tance některé z nich sloučím do jedné hodnoty. 1.2.2.9 Taneční fráze Taneční fráze je část celkové choreografie daného tance. Tvořena je dílčími pohyby jednotlivých částí těla tanečníka. Sekvence tanečních frází tvoří výslednou choreografii tance. 1.3 Rozbor zadání Zadání mé práce lze rozdělit na dvě části, teoretickou a praktickou. Náplní teoretické části je návrh gramatiky, která umožní sestrojit konečný atributovaný automat pro popis tanečního kroku. Náplní praktické části pak je vytvoření editoru pro editaci a simulaci tanečních kroků podle zadaných požadavků. 1.3.1 Teoretická část V celém návrhu automatu a gramatiky budu používat odborné definované termíny dle [9]. Pro potřeby nástroje pro editaci a simulaci pohybu tanečního páru zavedu model tance. Pohyb každého z tanečníků si lze představit jako sekvenci přechodů mezi jednotlivými stavy, což odpovídá konečnému automatu. Pohyb tanečního páru pak lze modelovat jako dva komunikující konečné automaty, kdy tanečník představuje nedeterministický konečný automat vzhledem k tomu, že v reálném tanci rozhoduje o pohybu celého tanečního páru. Tanečnice pak představuje deterministický konečný automat, protože její kroky závisí na krocích tanečníka, se kterým je 10

1.3. Rozbor zadání spjata držením, které pro tyto konečné automaty představuje komunikační médium. V mém návrhu modeluji automat tanečníka a automat tanečnice odděleně. Jednotlivé kroky tanečníků jsou však zasazené v hudbě, což pro mě představuje médium pro synchronizaci těchto automatů. To, že k sobě pohyb tanečníka a tanečnice patří, je vyjádřeno stejným časovým kvantem, které uběhne od začátku tance do okamžiku provádění těchto pohybů. 1.3.1.1 Užití konečného automatu Krok tanečníka si lze představit jako přechod mezi dvěma postaveními tanečníka, tedy nějakými dvěma stavy. Konkrétní taneční sekvence je pak množina stavů a přechodů mezi nimi, což odpovídá konečnému automatu, kdy jednotlivé kroky tvoří vstupní abecedu tohoto automatu a konkrétní taneční sekvence pak odpovídá řetězci nad touto abecedou. Chování každého konečného automatu lze popsat regulární gramatikou a naopak, ke každé regulární gramatice lze zkonstruovat konečný automat přijímající jazyk popisovaný gramatikou. Této vlastnosti využiji při návrhu konečného automatu. 1.3.1.2 Taneční skript Záznam posloupnosti tanečních kroků a sekvencí tanečníků budu nazývat taneční skript. 1.3.2 Praktická část Cílem praktické části je implementace nástroje pro simulaci pohybu tanečního páru po parketu. Požadované funkčnosti editoru jsou následující. 1.3.2.1 Platformní nezávislost Jelikož je ode mě vyžadována platformně nezávislá aplikace, zvažovat lze vícero řešení. První z nich je napsat celý program v jazyce, který je abstrahovaný od operačního systému pomocí virtuálního stroje. Typickým zástupcem takového jazyka je Java. Problémem této možnosti je závislost programu na externím stroji, např. Java Virtual Machine, a nutnost, aby si uživatel požadovaný stroj instaloval. 11

1. Analýza Druhou možností je využít webových prohlížečů a pojmout aplikaci jako webovou. V takovém případě odpadá problém závislosti na operačním systému, protože o to se postará webový prohlížeč. Navíc není nutné, aby si kvůli aplikaci uživatel cokoliv instaloval, protože webový prohlížeč patří k základnímu vybavení všech počítačů i mobilních zařízení. Vhodným jazykem pro webovou aplikaci vyžadující práci s objekty se jeví být Javascript. Problémy Javascriptu mohou být rozdílná interpretace v prohlížečích založených na různých vykreslovacích jádrech a nepříliš přívětivý styl psaní kódu. První problém je možné odstranit využitím doplňkové grafické knihovny, např. jquery, druhý využitím některého Javascriptového frameworku, např. AngularJS, nebo jazyka kompilovaného do Javascriptu, např. CoffeeScript. V případě volby druhé možnosti se navíc nabízí i využití elementu Canvas z HTML5, který je přímo stvořen pro vykreslování a editaci grafiky a její následné animace. 1.3.2.2 Vytváření, editace a odstranění jednotlivých kroků Editor by měl umět vytvářet jednotlivé kroky, které by následně mělo být možné zobrazit, ideálně po jednotlivých fázích pohybu kroku. Zároveň by již vytvořené kroky mělo být možné upravit nebo z tanečního skriptu úplně odstranit. 1.3.2.3 Spojování kroků do sekvencí a následná editace V odborné taneční literatuře se jednotlivé kroky prakticky nevyskytují. Místo toho se využívají definované sekvence kroků, tzv. variace nebo taneční fráze, které se z dílčích kroků skládají. Editor by měl proto umět tyto sekvence definovat z jednotlivých kroků a následně je být schopen opakovaně využít na různých místech tanečního skriptu. Již definované sekvence by mělo být možné upravit a opět rozpustit na jednotlivé kroky. 1.3.2.4 Ukládání do souboru a načítání z něj Všechny definované sekvence a kroky je možné do výsledného tanečního skriptu, až na několik omezení, poskládat prakticky libovolně. Zároveň je vhodné mít možnost aktuálně vytvořený taneční skript uložit a v případě nutnosti změny jednoho kroku ho nevytvářet celý znovu. Proto by měl editor mít možnost uložení aktuální vnitřní reprezentace do souboru a pozdějšího načtení dat tanečního skriptu ze souboru do vnitřní reprezentace. Pro část 12

1.3. Rozbor zadání návrhu práce to znamená definovat uspořádání dat v souboru a navrhnout vhodný parser, který data přečte a uloží do vnitřní reprezentace programu. 1.3.2.5 Export obrázku zobrazujícího aktuální pozice chodidel tanečního páru Pro výukové účely tance je vhodné mít možnost exportovat obrázky pro jednotlivé aktuální konfigurace nohou i pro konfigurace koncových stavů celé sekvence. 1.3.2.6 Animování vytvořeného tanečního skriptu a jednotlivých sekvencí Animací vytvořeného tanečního skriptu nebo jednotlivých sekvencí rozumím rozložení dané sekvence kroků na dílčí fáze kroků a jejich následné vykreslování. Počet takto vykreslených fází a rychlost tohoto vykreslování musí být dostatečně velké na to, aby lidské oko takto zobrazovaný pohyb vnímalo spojitě. 13

Kapitola 2 Návrh formálního modelu tance V následující sekci uvádím popis modelu tance, který následně využiji ve vytvářeném editoru. 2.1 Užití konečného automatu Pro modelování taneční sekvence jednotlivého tanečníka využívám konečný automat. Stavy automatu představují postavení tanečníka mezi dvěma kroky. Kroky představují jednotlivé přechody mezi stavy automatu. Stavy i přechody mají atributy, které reprezentují jejich fyzikální vlastnosti. Doplněním stavů a přechodů o atributy vznikne atributovaný konečný automat. Pohyb tanečníka je s pohybem tanečnice spjat hudbou. V mém návrhu pro popis této vlastnosti využívám atribut music udávající délku trvání daného kroku. Pohyby jednotlivých tanečníků si tedy odpovídají, pokud do okamžiku jejich provádění uběhlo od začátku provádění tanečního skriptu shodně dlouhé časové kvantum. Kroky tanečníka představují vstupní abecedu automatu, jednotlivá taneční sekvence nebo celý tanec je pak řetězec nad touto abecedou. Jednotlivý krok tanečníků dělím na dvě fáze, fázi přesunu a fázi dotočení. Toto dělení provádím z důvodu umožnění detailnějšího rozlišení atributů kroku, zejména pak nášlapů a rotování. 15

2. Návrh formálního modelu tance Tabulka 2.1: Přehled atributů vstupních symbolů a jejich význam Atribut Zjednodušený význam atributu term pravá/levá noha music délka trvání kroku v počtu dob hudby direction směr kroku od bodu pozice stojné nohy distance výsledná vzdálenost bodů pozice obou nohou tanečníka před fází dotáčení rotation1 rotace volné nohy ve fázi přesunu rotation2 rotace stojné nohy ve fázi přesunu postrotation1 dotočení volné nohy ve fázi dotočení postrotation2 dotočení stojné nohy ve fázi dotočení curvaturelength vzdálenost řídícího bodu kvadratické křivky od bodu pozice stojné nohy curvaturedirection směr umístění řídícího bodu kvadratické křivky od bodu pozice stojné nohy weight příznak přenosu váhy na aktuální volnou nohu foot1s pozice chodidla volné nohy na začátku kroku - bod pro rotaci foot1e pozice chodidla volné nohy na konci kroku (nášlap) - bod pro dotočení foot2s pozice chodidla stojné nohy na začátku kroku - bod pro rotaci foot2e pozice chodidla stojné nohy na konci kroku - bod pro dotočení 2.2 Vstupní abeceda automatu Každý vstupní symbol automatu reprezentuje jeden krok. Atributy vstupního symbolu jsou užity k určení parametrů jednotlivého kroku. Příkladem atributů jsou music pro délku trvání kroku či distance pro výslednou vzdálenost stojné a krokové nohy. Všechny atributy jsou sepsány v tabulce 2.1. 2.2.1 Vztažné body nohy Pro potřeby rotací a výpočtů umístění dané nohy definuji na každé noze tři body (bod špička, bod pozice a bod pata). Rozmístění jednotlivých bodů na noze ilustruje obrázek 2.1. 16

2.2. Vstupní abeceda automatu Obrázek 2.1: Zobrazení vztažných bodů nohy 2.2.1.1 Hrana nohy Hrana nohy je strana pravidelného čtyřúhelníku opsaného dané noze. Horní hrana nohy je strana dotýkající se špičky nohy, spodní hrana nohy je strana dotýkající se paty nohy a levá a pravá boční hrana jsou strany dotýkající se levé, resp. pravé, části nohy. 2.2.1.2 Bod špička Bod nohy špička je umístěn v polovině šířky nohy ve vzdálenosti 1 4 délky nohy od horní hrany nohy. Tento bod slouží k rotování dané nohy kolem špičky. 2.2.1.3 Bod pozice Bod pozice je umístěn na jedné z bočních hran v závislosti na tom, zda se jedná o levou či pravou nohu zkoumané osoby. Pro levou nohu je tento bod umístěn na levé hraně nohy, v případě pravé nohy na pravé hraně. Bod je na dané hraně umístěn v polovině délky hrany. Bod pozice slouží jako vztažný bod pro umístění dané nohy v prostoru a k rotování nohy ve fázi přesunu nohy. 2.2.1.4 Bod pata Bod nohy pata je umístěn v polovině šířky nohy ve vzdálenosti 1 8 délky nohy od spodní hrany nohy. Tento bod slouží k rotování dané nohy kolem paty. 17

2. Návrh formálního modelu tance 2.2.2 Stojná a volná noha 2.2.2.1 Stojná noha V souladu se zavedenou taneční terminologií definuji stojnou nohu jako nohu, jejíž všechny tři vztažné body nezmění svoji absolutní pozici v průběhu jedné fáze. 2.2.2.2 Volná noha Volnou (krokovou) nohu definuji jako nohu, jejíž všechny vztažné body mohou změnit svoji absolutní pozici v průběhu jedné fáze. 2.2.3 Fáze kroku Každý přesun nohy mezi dvěma body rozděluji na dvě fáze, na fázi přesunu nohy a na fázi dotočení po přemístění nohy do cílového bodu. 2.2.3.1 Přesun nohy Přesun nohy definuji jako fázi pohybu, ve které mohou všechny tři vztažné body nohy měnit svoji pozici v prostoru. V průběhu přesunu volná noha může také rotovat, v takovém případě rotuje kolem bodu daného atributem foot1s. Stojná noha se v průběhu přesunu volné nohy přesouvat nesmí, nicméně může rotovat. V takovém případě rotuje kolem bodu daného atributem foot2s. 2.2.3.2 Dotočení Dotočení nohy definuji jako fázi pohybu, ve které nejméně jeden vztažný bod nohy nemění svou absolutní pozici. Noha však může rotovat. V případě, že se jedná o volnou nohu, rotuje kolem vztažného bodu daného atributem foot1e. V případě, že se jedná o stojnou nohu, rotuje kolem vztažného bodu daného atributem foot2e. 2.2.4 Výsledná vzdálenost nohou tanečníka Vzhledem k tomu, že každý krok v průběhu tance může mít libovolnou délku shora omezenou fyzickými možnostmi tanečníka, ja třeba zanést tento atribut i do modelu. Neuvažuji zde však délku kroku jako takového, ale zajímám se pouze o konečnou vzdálenost bodů pozic stojné a krokové nohy. 18

2.2. Vstupní abeceda automatu Obrázek 2.2: Vzdálenost nohou tanečníka Výslednou vzdálenost kroku definuji jako vzdálenost bodu pozice krokové nohy tanečníka na konci pohybové fáze kroku od bodu pozice stojné nohy před zahájením fáze přesunu. V případě bodu pozice stojné nohy se tedy jedná o výsledné umístění na konci fáze dotočení předchozího kroku. Výslednou vzdálenost udává atribut distance. Tento atribut vysvětluje také obrázek 2.2. Z dané definice tedy vyplývá, že vzdálenost nohou může být větší než 0 i v případě, že se ani jedna z nohou nepohne ze svého místa v pohybové fázi kroku. 2.2.5 Směrování a rotace Hodnoty směrů a rotací jsou udávané ve stupních, které nabývají hodnot z intervalu 0;180, pokud rotace probíhá po směru hodinových ručiček, a hodnot z intervalu (-180;0), pokud rotace probíhá proti směru hodinových ručiček. 2.2.5.1 Směr kroku Směr kroku definuji jako směr výsledného umístění bodu pozice krokové nohy na konci fáze přesunu daného kroku vůči rotaci bodu pozice stojné nohy před zahájením fáze přesunu aktuálního kroku. Rotace bodu pozice aktuální stojné nohy před zahájením fáze přesunu aktuálního kroku je stejná jako rotace bodu pozice této nohy na konci fáze dotočení předchozího kroku. Směr kroku udává atribut direction. Tento atribut vysvětluje také obrázek 2.3. 2.2.5.2 Rotace Výsledná rotace každé nohy se skládá ze dvou složek, z rotace ve fázi přesunu nohy a dotočení. 19

2. Návrh formálního modelu tance Obrázek 2.3: Směr kroku Rotace ve fázi přesunu nohy Rotaci krokové nohy ve fázi přesunu nohy definuji jako rozdíl rotace krokové nohy na konci této fáze a směru kroku. Rotaci stojné nohy definuji jako rozdíl rotace stojné nohy na konci fáze přesunu a rotace této nohy před zahájením fáze přesunu. Rotaci ve fázi přesunu nohy udává atribut rotation1 pro krokovou nohu, resp. rotation2 pro stojnou nohu. Atribut rotation1 ilustruje obrázek 2.4. Atribut rotation2 ilustruje obrázek 2.5. Rotace ve fázi dotočení Rotaci krokové nohy ve fázi dotočení definuji jako rozdíl absolutní rotace krokové nohy na konci této fáze a absolutní rotace krokové nohy na konci předchozí fáze stejného kroku. Rotaci stojné nohy ve fázi dotočení definuji jako rozdíl absolutní rotace stojné nohy na konci fáze dotočení daného kroku a absolutní rotace stojné nohy na konci předchozí fáze stejného kroku. Rotace ve fázi dotočení udává atribut postrotation1 pro krokovou nohu, resp. postrotation2 pro stojnou nohu. Atributy dotočení ilustruje obrázek 2.5. 2.2.6 Polohy chodidel V průběhu tance chodidla mění své polohy, přičemž chodidlo stojné i krokové nohy se může v daném okamžiku nacházet právě v jedné z poloh. Množina poloh chodidel je podmnožinou množiny nášlapů. Vzhledem k potřebám editoru definuji právě tři polohy chodidel špičku, chodidlo ploše a patu. 20

2.2. Vstupní abeceda automatu Obrázek 2.4: Rotace krokové nohy Obrázek 2.5: Rotace stojné nohy a dotočení 21

2. Návrh formálního modelu tance 2.2.6.1 Špička Polohu špička definuji pro případy, kdy je váha tanečníka v přední části chodidla. V případě rotování chodidlo rotuje kolem vztažného bodu nohy špička. 2.2.6.2 Chodidlo ploše Váha tanečníka není výrazně posunuta do přední ani zadní části chodidla. V případě rotování noha rotuje kolem vztažného bodu nohy pozice. Rotování v této poloze je možné pouze pro krokovou nohu ve fázi přesunu. 2.2.6.3 Pata Váha tanečníka je v zadní části chodidla. V případě rotování chodidlo rotuje kolem vztažného bodu nohy pata. 2.2.6.4 Atributy pro popis poloh chodidel Polohy pro fázi přesunu Poloha chodidla krokové nohy pro fázi přesunu nohy je dána atributem foot1s. Poloha chodidla stojné nohy pro fázi přesunu nohy je dána atributem foot2s. Polohy pro fázi dotočení Poloha chodidla krokové nohy pro fázi dotočení je dána atributem foot1e. Poloha chodidla stojné nohy pro fázi dotočení je dána atributem foot2e. 2.2.7 Hudba Každý krok je svázán s hudbou. V modelu definuji atribut music pro zaznamenání počtu dob hudby, po které daný krok trvá. 2.2.8 Zakřivení trajektorie kroku Trajektorie pohybu krokové nohy nemusí být vždy přímá, typickým příkladem takového kroku jsou pivoty. Z toho důvodu je nutné umožnit zaznamenání trajektorie daného pohybu. Pro modelování trajektorie pohybu jsem se rozhodl využít kvadratickou křivku s jedním řídícím bodem. Do vnitřní reprezentace se zaznamenají údaje o směru a vzdálenosti tohoto řídícího bodu, které jsou vypočítány obdobně jako směr a vzdálenost kroku. 22

2.3. Stavy automatu 2.2.8.1 Vzdálenost řídícího bodu Vzdálenost řídícího bodu trajektorie pohybu definuji jako délku úsečky mezi řídícím bodem trajektorie a bodu pozice stojné nohy před zahájením fáze přesunu. Vzdálenost řídícího bodu trajektorie udává atribut curvptdistance. 2.2.8.2 Směr umístění řídícího bodu Směr umístění řídícího bodu trajektorie pohybu definuji jako směr umístění tohoto bodu vůči rotaci bodu pozice stojné nohy před zahájením fáze přesunu aktuálního kroku. Směr umístění řídícího bodu trajektorie udává atribut curvptdirection. 2.2.9 Přenos váhy při kroku Při tanečním kroku se může, ale také nemusí, změnit stojná noha pro další krok. Změna stojné nohy znamená přenesení váhy na aktuální volnou nohu. Atribut weight udává, zda se volná noha zatěžuje a mění se tak kroková noha pro krok následující. 2.3 Stavy automatu Stavy automatu reprezentují aktuální pozice nohou tanečníka mezi dvěma kroky. Atributy stavů automatu slouží pro výpočet nového postavení každé nohy. Příkladem takových atributů jsou leftx s významem x-ové souřadnice levé nohy či weightright s významem zatížení pravé nohy tanečníka. Všechny atributy stavů automatu jsou uvedeny v tabulce 2.2. 2.4 Gramatika pro generování kroku Při návrhu automatu jsem nejdříve navrhl gramatiku pro popis libovolné sekvence kroků. Tuto gramatiku jsem navrhl jako gramatiku G = ({S, A, B}, {l, r, l b, r b }, P, S) s následujícími pravidly: 1. S l b A lb r b B ra 2. A l b A lb ε 3. B r b B ra ε. 23

2. Návrh formálního modelu tance Tabulka 2.2: Přehled atributů stavů automatu a jejich význam Atribut leftx lefty leftrot rightx righty rightrot weightright weightleft Zjednodušený význam atributu X souřadnice bodu pozice levé nohy tanečníka Y souřadnice bodu pozice levé nohy tanečníka rotace bodu pozice levé nohy tanečníka X souřadnice bodu pozice pravé nohy tanečníka Y souřadnice bodu pozice pravé nohy tanečníka rotace bodu pozice pravé nohy tanečníka zatížená pravá noha zatížená levá noha Tabulka 2.3: Význam terminálních symbolů gramatiky l l b r r b krok levou nohou s přenesením váhy krok levou nohou bez přenesení váhy krok pravou nohou s přenesením váhy krok pravou nohou bez přenesení váhy Obrázek 2.6: Výsledný konečný automat l b l b,p A p l p b start S l,p b B Význam jednotlivých terminálních symbolů je uveden v tabulce 2.3. Odstraněním ε-pravidel této gramatiky jsem získal regulární gramatiku, k níž lze zkonstruovat odpovídající nedeterministický konečný automat. Jeho následnou determinizací jsem vytvořil výsledný konečný automat uvedený na obrázku 2.6. Vybraná sémantická pravidla pro výpočet pozice nohou tanečníka jsou uvedena v tabulce 2.4. Zbylá sémantická pravidla při užití daných vstupních 24

2.4. Gramatika pro generování kroku symbolů fungují analogicky, proto považuji za zbytečné je uvádět. Vytvořený model funguje za předpokladu, kdy veškeré rotace nohy probíhají kolem jednoho bodu pozice nohy. Vytvořený editor umožňuje rotovat kolem třech různých bodů na noze ve dvou fázích, proto se bod pozice musí dopočítávat z ostatních ve fázích, kdy není určen jako nášlap chodidla. Syntaktické pravidlo S ra S r b B S lb Sémantická pravidla r.term = right r.weight = 1 A.leftX = S.leftX A.leftY = S.leftY A.lef trot = S.lef trot + r.rotation2 + r.postrotation2 A.rightX = S.lef tx r.distance cos(s.lef trot + r.direction + 90) A.rightY = S.lef ty r.distance sin(s.lef trot + r.direction + 90) A.rightRot = S.leftRot + r.direction + r.rotation1 + r.postrotation1 A.weightRight = r.weight A.weightLeft = 1 r.weight r b.term = right r b.weight = 0 B.leftX = S.leftX B.leftY = S.leftY B.leftRot = S.leftRot + r b.rotation2 + r b.postrotation2 B.rightX = S.leftX r b.distance cos(s.leftrot + r b.direction + 90) B.rightY = S.leftY r b.distance sin(s.leftrot + r b.direction + 90) B.rightRot = S.leftRot+r b.direction+r b.rotation1+ r b.postrotation1 B.weightRight = r b.weight B.weightLeft = 1 r b.weight l.term = left l.weight = 1 B.lef tx = S.rightX l.distance cos(s.rightrot + l.direction + 90) B.lef ty = S.rightY l.distance sin(s.rightrot + l.direction + 90) 25

2. Návrh formálního modelu tance S l b A B.lef trot = S.rightRot + l.direction + l.rotation1 + l.postrotation1 B.rightX = S.rightX B.rightY = S.rightY B.rightRot = S.rightRot + l.rotation2 + l.postrotation2 B.weightLef t = l.weight B.weightRight = 1 l.weight l b.term = left l b.weight = 0 A.leftX = S.rightX l b.distance cos(s.rightrot + l b.direction + 90) A.leftY = S.rightY l b.distance sin(s.rightrot + l b.direction + 90) A.leftRot = S.rightRot + l b.direction + l b.rotation1 + l b.postrotation1 A.rightX = S.rightX A.rightY = S.rightY A.rightRot = S.rightRot + l b.rotation2 + l b.postrotation2 A.weightLeft = l b.weight A.weightRight = 1 l b.weight Tabulka 2.4: Sémantická pravidla pro výpočet pozic nohou tanečníka 26

Kapitola 3 Implementace V této kapitole popíšu zvolené technologie pro implementaci editoru, způsob vytváření tanečního skriptu a dílčích sekvencí, jeho ukládání do souboru a načítání ze souboru a s tím spojený popis parseru. 3.1 Zvolené technologie Pro implementaci editoru jsem se rozhodl využít skriptovací jazyk Javascript, především kvůli jeho podpoře ve všech webových prohlížečích. Přestože v některých prohlížečích editor nebude muset fungovat zcela dokonale, považuji to za menší problém než nemožnost spuštění editoru na určitých operačních systémech, aniž by bylo nutné cokoliv instalovat. Pro vykreslování jednotlivých obrázků nohou tanečníků a editaci jejich postavení a rotací využívám element Canvas technologie HTML5. Vzhledem k tomu, že nejdůležitější náplní této práce není obsluha grafických prvků zvolené technologie, využívám pro práci s Canvasem javascriptový framework KineticJS [12] verze 4.7.1. 3.2 Definice postavení Taneční skript i každá dílčí definovaná sekvence má definované své výchozí postavení, které umožňuje danou sekvenci editovat a animovat nezávisle na ostatních. V případě tanečního skriptu je toto postavení nutné potvrdit, více v sekci 3.3.3.2. V případě definice nové sekvence se nastavení výchozího postavení provede automaticky z pozice jednotlivých nohou v posledním stavu předcházejícímu prvnímu kroku sekvence. 27

3. Implementace 3.3 Práce s editorem Při otevření webové stránky se skriptem se zobrazí editor bez jakýchkoli dat s obrázky nohou umístěnými ve skriptem definovaném postavení. Nyní jsou dvě možnosti jak dále pracovat s editorem. Pokud existuje dříve vytvořený soubor s definicí tanečního skriptu, je možné tento soubor do editoru vložit. Této možnosti se věnuje sekce 3.7. V případě, že soubor nemáme, je nutné začít taneční skript vytvářet od začátku. Této možnosti se věnuje sekce 3.3.3. 3.3.1 Grafické rozhraní editoru Grafické rozhraní editoru se skládá z několika částí. V levé části je umístěna editační plocha představující taneční parket. Pod touto plochou je umístěna časová osa zobrazující členění hudby na takty a doby a pod ní jsou časové osy tanečníka a tanečnice zobrazující jejich jednotlivé kroky. V pravé části okna je umístěn panel k ovládání editace. Celé grafické rozhraní editoru je zobrazeno na obrázku 3.1. 3.3.2 Ovládání editoru Editor se z převážné části ovládá myší. Pouze rotování jednotlivých nohou tanečníků se provádí myší a zároveň stisknutou klávesou R. Pro posunování zobrazovaného výřezu tanečního parketu se používají směrové šipky na klávesnici. 3.3.3 Postup vytváření tanečního skriptu Tato část práce se věnuje postupu vytváření nového tanečního skriptu bez vkládání souboru s jeho dřívějším záznamem. 3.3.3.1 Výběr druhu tance Výběr druhu tance z nabídky je nutný krok k umožnění tvorby tanečního skriptu. Tímto potvrzením se do globální proměnné načtou příslušné parametry tance, kterými jsou: 28 délka hudebního taktu (tj. počet dob v taktu) počet hraných taktů za minutu délky trvání jednotlivých dob dle tabulky 1.1

3.3. Práce s editorem Obrázek 3.1: Grafické rozhraní délka prvního tančeného taktu (tj. předtaktí). Tyto parametry jsou důležité pro správné přepočítávání zadaných dob v hudbě na jejich délku a následné přehrávání. Délka tanečního taktu a délka trvání jednotlivých dob v daném tanci jsou měnitelné v souboru dance-definitions.js. Počet taktů za minutu a délka předtaktí jsou volitelné přímo v rámci editoru a dá se tak v průběhu editace měnit celková doba a rychlost přehrávání vytvořených sekvencí. 3.3.3.2 Potvrzení výchozího postavení Potvrzení výchozího postavení páru vede k zablokování editace postavení či rotace libovolné nohy. Potvrzením se uloží aktuální zatížená noha každého tanečníka, která se tak stává stojnou nohou pro první vytvářený krok. Z atributů této nohy se následně dopočítají atributy pro výpočet absolutních souřadnic ostatních nohou, kterými jsou vzdálenost, směr a rotace vůči stojné noze partnera. 29

3. Implementace Tímto potvrzením se zároveň v časových osách tanečníka i tanečnice objeví krok nulové doby trvání. Jedná se právě o krok, který definuje výchozí postavení a nelze ho libovolně editovat ani odstranit. 3.3.3.3 Vytváření nového kroku 30 V této sekci uvádím postup pro vytvoření nového kroku v editoru. Výběr pozice pro nový krok Pro vytvoření nového kroku je nutné vybrat v příslušné časové ose, za který již vytvořený krok se bude nový vkládat. Zároveň se při tom v canvasu zobrazí výsledná pozice aktuálně vybraného kroku, více o tom v sekci 3.3.6. Výběr krokové a stojné nohy Na základě potvrzené pozice na časové ose pro nově vznikající krok se automaticky vybere stojná i kroková noha v aktuálně vytvářeném kroku. Jako stojná noha se volí zatížená noha na konci kroku označeného v časové ose tanečníka, jako kroková noha se zvolí noha bez váhy. Potvrzení nášlapu pro fázi přesunu nohy Před umožněním přesunu krokové nohy a změny rotací obou nohou editovaného tanečníka je nutné potvrdit polohu chodidla stojné nohy pro fázi přesunu nohy. Kolem zvoleného vztažného bodu nohy bude stojná noha v této fázi rotovat. Kroková noha v této fázi rotuje vždy kolem svého bodu pozice. Potvrzení umístění nohy, rotací a nášlapů pro fázi dotáčení Po potvrzení nášlapu pro fázi přesunu nohy je umožněno obě nohy rotovat kolem zvolených bodů pro tuto fázi a zároveň přenést krokovou nohu na novou pozici. Při přenosu je možné zvolit režim přichytávání nohy k předpočítaným souřadnicím, více o této volbě v sekci 3.3.7. Přechodem do další fáze se potvrdí aktuální umístění krokové nohy, rotace obou nohou a zároveň nášlapy, tedy vztažné body pro dotáčení, pro fázi dotáčení. Potvrzení dotočení a hudby Ve fázi dotočení již není možné krokovou nohu přesunovat. V této fázi je pouze umožněno obě nohy tanečníka dotočit do konečné rotace. Zároveň je nezbytně nutné zadat dobu v hudbě nebo počet dob v hudbě, po které tento krok bude trvat. Více o možnostech zadávání hudby v sekci 3.6. V této fázi je také možné nastavit

3.3. Práce s editorem umístění řídícího bodu trajektorie kroku. Přechodem do další fáze dojde k uložení kroku na příslušnou pozici v tanci, přepočítání absolutních pozic všech následujících kroků a překreslení časové osy tanečníka. 3.3.4 Editace kroku Často může nastat situace, kdy je třeba již vytvořený krok upravit. Editor tuto funkci umožňuje. Zahájení editace probíhá stejně jako tvorba nového kroku, tedy vybráním kroku v časové ose příslušného tanečníka. Po vybrání kroku v časové ose a potvrzení volby editace kroku probíhá editace kroku stejně jako tvorba nového kroku s několika málo rozdíly. Ve formuláři pro zadávání nášlapů či hudby jsou výchozí hodnoty aktuálně editovaného kroku. Zároveň je kroková noha ve fázi přesunu přesunuta do původní koncové pozice ve fázi přesunu a pro obě nohy je nastavena původní rotace v aktuální fázi. Editace kroku neumožňuje záměnu stojné a krokové nohy ani v případě, že v sekvenci před daným krokem došlo k vložení nebo vypuštění některého z kroků. V takovém případě je nutné krok odstranit nebo před něj vložit krok nový. 3.3.5 Sekvence 3.3.5.1 Definice nových sekvencí V editoru je umožněno vytvářet nové sekvence z již definovaných kroků nebo sekvencí. Vytváření nové sekvence probíhá potvrzením volby editoru Definovat sekvenci, následným zadáním jména sekvence unikátního v rámci definovaného tanečního skriptu a postupným vybráním a potvrzením počátečního a koncového kroku sekvence v rámci časové osy jednoho z tanečníků. Editor podle vybraných kroků v časové ose jednoho z tanečníků dohledá odpovídající krok v časové ose tanečníka druhého. Podmínkou pro úspěšné definování sekvence je, že v okamžiku začátku počátečního vybraného kroku začíná také krok v časové ose druhého tanečníka. Výchozí postavení pro tyto kroky se zároveň stává výchozím postavením pro celou sekvenci. Druhá podmínka je, že v okamžiku konce kroku vybraného koncového kroku končí také krok v časové ose druhého tanečníka. Pokud jsou obě tyto podmínky splněny, dojde k vytvoření nové sekvence, která je ihned 31

3. Implementace zobrazena v časových osách jednotlivých tanečníků. V opačném případě k definování nové sekvence nedojde. Pokud je mezi počátečním a koncovým krokem definice obsažena již jiná definovaná sekvence kroků, je tato sekvence pro daný případ rozpuštěna na jednotlivé kroky, které jsou začleněny do nově vznikající sekvence. 3.3.5.2 Vkládání existujících sekvencí Do definovaného tanečního skriptu je možné vložit dříve definovanou sekvenci. Ke vložení dojde po vybrání kroku v jedné z časových os a následnému vybrání z nabídnutých sekvencí. K vložení jsou nabízeny pouze sekvence, které svou výchozí volnou a stojnou nohou odpovídají koncovému postavení kroků jednotlivých tanečníků, za které je sekvence vkládána. Vložení bude úspěšné pouze v případě, že délka hudebních dob uplynulých před koncem vybraného kroku v jedné z os je rovna délce hudebních dob uplynulých před koncem kroku v časové ose druhého tanečníka. 3.3.6 Zobrazení postavení v rámci kroku Při kliknutí na krok v časové ose se v editační ploše zobrazí postavení tanečníka v jednotlivých fázích kroku, ve výchozí pozici, v pozici na konci fáze přesunu a ve finální pozici. Zároveň je vykreslena trajektorie přesunu daného kroku. Dle hudby se dopočítá a zobrazí i příslušná konfigurace nohou druhého tanečníka v okamžiku ukončení druhé fáze kroku vybraného tanečníka. 3.3.7 Režim přichytávání Pro ulehčení umísťování krokové nohy editor umožňuje nohu ve fázi přesunu přichytávat k předpočítaným souřadnicím. Souřadnice jsou dopočítávány vůči výchozí pozici stojné nohy. Celkem je definováno osm směrů, ve kterých jsou body definovány. Jednotlivé body přichytávání v jednom směru jsou vůči sobě ve vzdálenosti poloviny délky chodidla tanečníka. Maximální vzdálenost, do které je možné krok v tomto režimu umístit, je osminásobek délky chodidla tanečníka. Tento režim lze kdykoliv v průběhu editace vypnout a umístit nohu kamkoliv dle své vůle. 32

3.4 Výpočet trajektorie kroku 3.4. Výpočet trajektorie kroku Pro výpočet trajektorie pohybu krokové nohy využívám algoritmus de Casteljau pro výpočet pohybu po kvadratické Bézierově křivce dle popisu uvedeného v [2]. 3.5 Export obrázků a animování tanečního skriptu Editor umožňuje exportovat aktuální postavení tanečního páru jako obrázek a jednotlivé sekvence i taneční skript v rámci editoru animovat. 3.5.1 Export obrázků Editor umožňuje exportovat obrázek momentálního postavení tanečního páru nebo celý taneční skript či sekvenci jako sekvenci obrázků. 3.5.1.1 Export momentálního postavení tanečního páru Editor umožňuje exportovat momentální zobrazení tanečního páru jako obrázky ve formátu PNG. Prohlížeče však při lokálním spuštění skriptu se zdrojovou adresou začínající file:/// export blokují z důvodu same-origin politiky [10]. Řešením je spustit skript na lokálním webovém serveru nebo využít webového prohlížeče Opera, který i lokální soubory spouští na adrese localhost/. 3.5.1.2 Export sekvence obrázků Editor umožňuje exportovat celý taneční skript či jeho dílčí sekvence jako sekvenci obrázků. Tato sekvence je vytvořena v průběhu animace. Generování těchto obrázků je natolik výpočetně náročné, že animace nemusí běžet plynule a chovat se úplně podle očekávání. Výsledná sekvence obrázků je následně zabalena do archivu.zip, k čemuž využívám javascriptovou knihovnu JSZip [7]. 3.5.2 Animace Editor umožňuje přehrávat taneční skript i dílčí vytvořené sekvence. O animování se stará užitý framework KineticJS, kterému jsou předány jednotlivé pozice kroků s absolutní délkou trvání. 33

3. Implementace 3.6 Hudba Editor umožňuje zadávání hudby jako dob, ve kterých se daný druh tance počítá, nebo jako celkovou délku dob, po které daný krok trvá. V případě, že je zvolena možnost zadání hudby jako počítané doby, umožňuje editor zadání časování kroků i pro kroky definované v budoucnu. 3.6.1 Zadávání časování kroků Zadávání časování kroků bez nastavení jejich atributů je možné při zadávání hudby jako počítaných dob. V tom případě jsou v časové ose zvoleného partnera vytvořeny neaktivní kroky. Od prvního kroku, který nemá vyplněné hodnoty atributů, jsou ostatní kroky neaktivní a nedá se s nimi pracovat. Pouze tento první krok je možné editovat a umožnit tak práci s následujícími kroky. V tomto režimu také editor upravuje délky předchozích dob při zadání doby &. V případě, že je hodnota délky doby předchozího kroku rovna některé z definovaných dob v tanci kromě doby &, je od takové doby hodnota doby & odečtena. Při následné editaci kteréhokoliv kroku s takto upravenou hudbou se již poměry dob okolních dob nekontrolují, proto je nutné v případě nevhodné délky doby trvání kroku tuto délku ručně upravit. Stejná situace nastane při smazání některého z kroků. 3.6.2 Výpočet absolutní délky trvání kroku při animaci Pro každý krok je zaznamenána jeho doba trvání v počtu dob v hudbě. Při animaci je však třeba znát hodnotu absolutní délky trvání kroku v milisekundách. K tomuto výpočtu jsou využity hodnoty počtu taktů hudby za minutu, počet dob hudby v jednom taktu a délka trvání dané doby kroku. Trvání kroku v milisekundách je pak vypočítáno dle následujícího vztahu: absolutnidoba = dobyt rvanikroku 60 taktuzamin dobv T aktu 1000 Výsledná absolutní doba trvání se dále dělí na dobu pro fázi přesunu a fázi dotočení v poměru 4:1. 34

3.7. Definiční soubor tanečního skriptu a parser Tabulka 3.1: Klíčová slova definičního souboru Klíčové slovo DANCENAME DEFINE DefFeetPos EndDefFeetPos DefSeq EndDefSeq DANCE step seq man woman left right StartFeetPos EndFeetPos Význam zvolení druhu tance otevírá definiční část souboru otevírá definiční část postavení tanečního páru uzavírá definiční část postavení tanečního páru otevírá definiční část sekvence uzavírá definiční část sekvence otevírá část definice tanečního skriptu vložení řádku s atributy kroku vložení sekvence do tanečního skriptu uvozuje definici kroků či postavení pro muže uvozuje definici kroků či postavení pro ženu uvozuje definici postavení pro levou nohu uvozuje definici postavení pro pravou nohu otevírá část výchozího postavení sekvence nebo tanečního skriptu uzavírá část výchozího postavení sekvence nebo tanečního skriptu 3.7 Definiční soubor tanečního skriptu a parser Editor umožňuje uložit vytvořené sekvence a taneční skript do souboru, ten později opět načíst a pokračovat v editaci či v animování. 3.7.1 Struktura souboru Soubor obsahující záznam tanečního skriptu a jednotlivých sekvencí je definován ve formátu CSV. Hlavními důvody pro výběr tohoto formátu je možnost editovat jednotlivé kroky a postavení mimo editor a snadno rozpoznatelná struktura při syntaktické analýze. Každý řádek souboru začíná klíčovým slovem, za kterým můžou následovat jednotlivé parametry. Syntaxe souboru je popsána s využitím Backus-Naurovy formy a uvedena tak v příloze A. Jednotlivá klíčová slova souboru jsou přehledně zobrazena v tabulce 3.1. 35

3. Implementace 3.7.2 Části souboru Soubor lze pomyslně rozdělit do tří částí druh tance, definiční část, taneční část. 3.7.2.1 Druh tance V případě úspěšného zpracování této části se do vnitřních struktur editoru načtou specifické informace o daném druhu tance. Jedná se zejména o název druhu tance, počet taktů za minutu či počet dob v tanci. V souboru lze upravit délku prvního taktu a počet taktů za minutu. 3.7.2.2 Definiční část V této části souboru jsou zpracovány definice jednotlivých sekvencí a postavení tanečního páru. Zde načtená data jsou uložena do příslušných vnitřních struktur a jsou samostatně editovatelné, nicméně nemusí nutně být součástí taneční části souboru. 3.7.2.3 Taneční část Tato část obsahuje taneční skript, který se skládá z dílčích kroků a sekvencí, které musí být definovány v definiční části souboru. Struktura této části souboru je stejná jako struktura definice sekvence s tím rozdílem, že je zde povoleno rekurzivní vkládání sekvencí do hloubky 1. Vložení sekvence je uvozeno klíčovým slovem pro sekvenci následované jménem sekvence. Sekvence je vkládána jednou dohromady pro muže i ženu. 3.7.3 Užití souboru Při spuštění editoru se kromě nového definování nového tanečního skriptu nabízí také možnost nahrát již existující taneční skript ze souboru. V okamžiku, kdy je soubor s definovaným tanečním skriptem nahrán do editoru, jsou do příslušných vnitřních struktur editoru nahrány parametry tanečního skriptu, definované sekvence a taneční skript. Po úspěšném kontrole správnosti nahraných dat editor vytvoří pro jednotlivé tanečníky příslušné časové osy a dále se s tanečním skriptem a sekvencemi pracuje, jako by byly čerstvě vytvořené. V případě, že je soubor nahrán až v okamžiku, kdy jsou v editoru vytvořeny jakékoli záznamy, jsou tato nová data přepsána daty ze souboru. 36

3.7. Definiční soubor tanečního skriptu a parser 3.7.3.1 Ukládání do souboru Kdykoliv v průběhu editace tanečního skriptu lze taneční skript zapsat do souboru. Zapsání je možné pouze po úspěšném provedení validace. Více o těchto kontrolách v sekci 3.8. 3.7.4 Syntaxe postavení tanečního páru Začátek definice postavení tanečního páru začíná klíčovým slovem pro tuto definici. Na dalším řádku je očekáváno klíčové slovo pro muže. Na dalších dvou řádcích jsou hodnoty pro jednotlivé nohy uvozené klíčovými slovy po řadě pro levou a pravou nohu muže. Na dalších třech řádcích je totéž pro ženu. Celá definice končí přečtením klíčového slova ukončující definici. Klíčová slova definice postavení se liší podle toho, zda jde o samostatně definované postavení nebo o postavení definované v rámci nějaké sekvence. Ve druhém případě není vyžadováno jméno postavení v atributu name. 3.7.5 Syntaxe tanečního kroku Strukturu definice tanečního kroku tvoří jeden řádek uvozený klíčovým slovem pro krok a následovaný jednotlivými atributy kroku. 3.7.6 Syntaxe sekvence Struktura definice sekvence začíná klíčovým slovem pro tuto definici a následně se skládá ze dvou částí. První z nich je výchozí postavení definované podle definice postavení. Druhou část pak tvoří definice tanečních kroků pro muže, začínající klíčovým slovem pro muže, a definice tanečních kroků pro ženu, začínající klíčovým slovem pro ženu. Definice sekvence neumožňuje rekurzivní vkládání definovaných sekvencí. Celá definice končí klíčovým slovem uzavírajícím tuto definici. 3.7.7 Zpracování souboru Navržená struktura souboru uvedená v příloze A odpovídá bezkontextové gramatice LL(1). Soubor je zpracován metodou rekurzivního sestupu. 37

3. Implementace 3.8 Validace tanečního skriptu V této sekci uvádím základní validační pravidla, která editor využívá k ověření proveditelnosti tanečního skriptu a jednotlivých sekvencí. Kompletní validace je spouštěna při akcích načtení ze souboru, zápisu do souboru a začátku animace. 3.8.1 Kontrola definice užitých sekvencí Všechny sekvence užité v tanci musí být definovány. 3.8.2 Kontrola shodné délky sekvence pro oba tanečníky Vytvořené taneční sekvence partnera i partnerky musí trvat stejný počet dob hudby. Toto pravidlo je uplatňováno pro celý tanec i dílčí sekvence. 3.8.3 Kontrola shodných začátků sekvence Sekvence vložená do tanečního skriptu musí pro oba partnery začínat po stejném počtu dob hudby, které uběhly od začátku tanečního skriptu. 3.8.4 Kontrola správné návaznosti kroků Jednotlivé kroky musí být prováděny nezatíženou nohou. Při vymazání některého kroku či změny atributu přenosu váhy může dojít k situaci, kdy krok končí s váhou na noze, která je v navazujícím kroku kroková. 3.8.5 Kontrola vyplněnosti atributů kroků Při zadávání časování pro více kroků najednou nastane stav, že taneční sekvence obsahuje kroky s nevyplněnými atributy. Před uložením sekvence však musí být všechny kroky vyplněny. 3.9 Návrhová rozhodnutí V této části uvádím několik případů, které bylo z různých důvodů ve výsledném návrhu zanedbat či mírně modifikovat. 38

3.9. Návrhová rozhodnutí 3.9.1 Zanedbání vybraných typů kroků V rámci návrhu editoru jsem hledal kompromis mezi co největší reálnou přesností definice pohybů a komplikovaností návrhu modelu tance. Z toho důvodu editor nepokrývá některé typy pohybů a jiné mírně modifikuje. 3.9.1.1 Točení s váhou na obou nohách Některé taneční kroky probíhají s váhou na obou nohách, typickým příkladem je twistová otáčka v tangu. Editor neumožňuje takový krok definovat, je proto nutné zvolit jednu nohu jako stojnou, i když své postavení nezmění ani jedna z nohou. 3.9.1.2 Zanedbání skoků V tancích se mohou objevovat skoky, což znamená přesun obou nohou v kroku zároveň. Ve zdrojové dokumentaci popsaných tanečních variací se však takový krok neobjevil, proto jsem se rozhodl tento typ pohybu zanedbat. 3.9.1.3 Modifikace pivot V pivotě se dle definice 1.2.2.5 nemění vzdálenost jednotlivých nohou. Znamená to tedy, že se jedna z nohou pohybuje po kružnici. Vzhledem k malému množství výskytů těchto typů kroků vůči ostatním jsem se rozhodl nezavádět tuto trajektorii pohybu, ale považuji za dostatečnou aproximaci užití kvadratické křivky. Druhý problém pivoty je, že se v průběhu tohoto kroku posunují postupně obě nohy. Tento problém lze vyřešit definováním pivoty jako sekvence složené ze dvou kroků s příslušnou délkou trvání rozdělenou mezi tyto kroky. 3.9.2 Změna významu editace sekvence Původně zamýšlená editace sekvence byla ve významu modifikace atributu výsledné délky či směru průběhu sekvence, přičemž by se tato změna následně rozpočítala mezi jednotlivé kroky sekvence. Nicméně jsem dospěl k názoru, že tento způsob editace není vhodný. Jsou taneční kroky, ve kterých se z důvodu fyzických možností tanečníků krok více zarotovat nebo protáhnout nedá. Z toho důvodu jsem ponechal pouze možnost editace sekvence krok po kroku. 39

3. Implementace 3.9.3 Vyhodnocování postavení tanečního páru Vyhodnocování validního postavení tanečního páru je v současné verzi editoru založeno pouze na kontrole shodnosti zatížených nohou tanečníka. Do budoucna by bylo vhodné zaměřit se i na relativní postavení jednotlivých nohou a vyhodnocování těchto atributů s vhodně navrženou tolerancí odchylek umístění. 40

Kapitola 4 Testování Testování implementace jsem provedl při manuálním modelování tanečních variací. Při tomto modelování jsem otestoval vytváření jednotlivých kroků, jejich editace, spojení do sekvencí a práci s nimi, animaci a export sekvence obrázků. Pro doložení správného chování editoru přikládám k modelovaným sekvencím vybrané exportované obrázky. Všechny exportované obrázky spolu s vytvořeným souborem se záznamem definic a tanečním skriptem lze nalézt na přiloženém CD ve složce test. 4.1 Základní waltzová sestava První testovací sekvence je základní waltzová sestava skládající se z následujících variací: Přípravný krok Otáčka vpravo 1. a 2. část Uzavřená změna z P do L Otáčka vlevo 1. a 2. část Vybrané fáze této sestavy jsou zobrazeny na obrázcích 4.1 a 4.2. 4.2 Spinová otáčka ve waltzu Jako druhou testovací sekvenci kroků jsem vytvořil model 2. části spinové otáčky ve waltzu. Vybrané fáze této variace jsou zobrazeny na obrázcích 4.3 41

4. Testování (a) Výchozí postavení (b) Přípravný krok (c) 1. č. ot. v P 1. krok (d) 1. č. ot. v P 2. krok (e) 1. č. ot. v P 3. krok (f) Před 2. částí ot. v P (g) 2. č. ot. v P 1. krok (h) 2. č. ot. v P 2. krok (i) 3. č. ot. v P 3. krok 42 (j) Uz. zm. 1. krok (k) Uz. zm. 2. krok (l) Uz. zm. při 3. kroku Obrázek 4.1: Waltzová sestava 1. část

4.2. Spinová otáčka ve waltzu (a) 1. č. ot. v L 1. krok (b) 1. č. ot. v L 2. krok (c) 1. č. ot. v L při 3. kroku (d) Po 1.č. ot. v L (e) 2. č. ot. v L 1. krok (f) 2. č. ot. v L 2. krok (g) 2. č. ot. v L 3. krok (h) Po 2. č. ot. v L Obrázek 4.2: Waltzová sestava 2. část 43

4. Testování a 4.4. Všechny exportované obrázky a příslušný taneční skript lze nalézt na přiloženém CD ve složce test. Na této taneční variaci zároveň demonstruji způsob modelování pivotových otáček jako rozdělení kroku na dva kroky s poměrnou délkou trvání. 4.3 Shrnutí testování Provedené testy ověřily funkčnost jednotlivých vlastností editoru a odhalily také několik drobných nedostatků. Viditelným nedostatkem je občasné překrývání jednotlivých obrázků nohou v průběhu animace. V reálném tanci se noha v různých fázích kroku pohybuje různými rychlostmi. Navržený model umožňuje rozlišit pouze dvě fáze kroku, z čehož jedna je určena pouze pro dotočení nohou. Rychlost pohybů nohou je pak určena časem k provedení a vzdáleností kroku, což vede k tomu, že se krokové nohy jednotlivých tanečníků mohou v průběhu pohybu překrýt. Při překrytí obrázků nohou by do budoucna mohlo být řešením přizpůsobení pomalejšího kratšího pohybu rychlejšímu nebo rozlišení pohybu kroku na více fází, které by se modelovaly odděleně. Občas se vyskytuje problém, kdy editační plocha při animaci problikává. Toto chování je způsobeno snahou editoru zobrazit pohyb kroku z výchozí pozice až do cílové bez postupného posouvání výřezu zobrazujícího taneční plochu. Při vytvoření příliš dlouhého kroku tato snaha může vést právě k problikávání nebo nedokonalému vykreslení animace. Tento editor byl otestován v prohlížečích Chrome, Firefox a Opera. Ve všech těchto prohlížečích modelování funguje správně, jednotlivé prohlížeče se však liší ve vykreslování písma např. v časových osách. Může se proto stát, že text zobrazující délku trvání kroku přesáhne do pole dalšího kroku. Možným zdrojem problémů je velká citlivost editace, kdy i malá změna v jednom kroku způsobí, že nohy se budou v následujících krocích překrývat či jinak neodpovídat původně vytvořenému modelu. Tento problém by v budoucnu mohla odstranit možnost definovat cílové postavení, do kterého by se pár měl na konci kroku dostat. 44

4.3. Shrnutí testování (a) (b) (c) (d) (e) (f) (g) (h) (i) (j) (k) (l) Obrázek 4.3: Spinová otáčka 1. část 45

4. Testování (a) (b) (c) (d) (e) Obrázek 4.4: Spinová otáčka 2. část 46