Android OpenGL. Animace a ovládání pomocí dotykové obrazovky



Podobné dokumenty
Obsah. LayoutInflater. UI model KeyEvent View Tvorba vlastních komponent Canvas Matrix Vlastní EditText

( ) Kreslení grafů funkcí metodou dělení definičního oboru I. Předpoklady: 2401, 2208

16. února 2015, Brno Připravil: David Procházka

Využití EduBase ve výuce 2

Postup práce s elektronickým podpisem

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

etailer Kit Lenovo YOGA Tab 3 10

Postřehová hra. Zadání projektu. 1 Moje cíle

Post-Processingové zpracování V módu post-processingu je možné s tímto přístrojem docílit až centimetrovou přesnost z běžné 0,5m.

Windows 10 (6. třída)

Kalendář je nástroj, který vám pomůže zorganizovat si pracovní čas. Zaznamenáváme do něj události jako schůzky, termíny odevzdání práce a podobně.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

3. Souřadnicové výpočty

Třídy a objekty -příklady

Pracovní ukázka vstupního testu DSA 1.

Paradigmata kinematického řízení a ovládání otevřených kinematických řetězců.

Popis připojení elektroměru k modulům SDS Micro, Macro a TTC.

Novinky v Maple T.A. 10

Klientský portál leasing24.cz. KLIENTSKÝ PORTÁL 24 NÁVOD NA PŘIHLÁŠENÍ A REGISTRACI UŽIVATELE Leasing24.cz. Stránka 1 z 15

ikiosk Digitální distribuce novin a časopisů pro ios a Androind prostřednictvím PNS a.s

E-ZAK. metody hodnocení nabídek. verze dokumentu: QCM, s.r.o.

KIV/ZI Základy informatiky. MS Excel maticové funkce a souhrny

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Mobilní aplikace pro ios

Kvadratické rovnice pro učební obory

Průvodce instalací programu DesignCAD 3D Max v25 US (CZ) Full/Upgrade

Programování v Javě I. Leden 2008


Propiska s kamerou PRO, 1280x720px

Teoretické minimum z PJV

Kvadratické rovnice pro studijní obory

Typický prvek kolekce pro české řazení

20. Projekt Domácí mediotéka

1.3.1 Kruhový pohyb. Předpoklady: 1105

Programování v jazyku C# II. 4.kapitola

BAREVNÉ PALETY A MONOCHROMATICKÉ ZOBRAZOVÁNÍ

Založte si účet na Atollon.com

etailer Kit Lenovo Phab

INŽENÝRSKÁ MATEMATIKA LOKÁLNÍ EXTRÉMY

Špičková fotopast s FULL HD kamerou

4.6.6 Složený sériový RLC obvod střídavého proudu

SIS INSTALAČNÍ PŘÍRUČKA (SITE INFORMATION SYSTEM) Datum vytvoření: Datum aktualizace: Verze: v 1.3 Reference:

3. Rozměry a hmotnosti Přiřazení typů a velikostí čelních desek Odchylka od TPM... 8

GIS HZS ČR pro ORP a přednostní připojení k veřejné komunikační síti

2. Kontakty. 1. Základní nastavení telefonu Vložení SIM a paměťové karty Zapnutí telefonu a PIN. 3. Volání

Android OpenGL. Pokročilé shadery

Popis a funkce klávesnice Gama originální anglický manuál je nedílnou součástí tohoto českého překladu

Programování v Javě I. Únor 2009

Operační systém teoreticky

Nerovnice s absolutní hodnotou

MONOTÓNNOST FUNKCE. Nechť je funkce f spojitá v intervalu I a nechť v každém vnitřním bodě tohoto intervalu existuje derivace f ( x)

Peer Group User Quick Reference Cards

Microsoft Office. Word styly

Průvodce e learningem

A7B39PDA Deliverable D3 ČVUT FEL, 2014/2015 Daniil Barabash, Adam Samec, Tatiana Okonechnikova. Principy tvorby mobilních aplikací (A7B39PDA)

PŘEPOČET ZÚČTOVANÝCH ZÁLOH V 10% NA 14% V KONOCOVÉ

Operační program Rybářství

Název: VY_32_INOVACE_PG3309 Booleovské objekty ve 3DS Max - sčítání a odčítání objektů

Umělá inteligence. Příklady využití umělé inteligence : I. konstrukce adaptivních systémů pro řízení technologických procesů

1. Programování, typy programovacích jazyků, historie.

Číselné soustavy Ing. M. Kotlíková, Ing. A. Netrvalová Strana 1 (celkem 7) Číselné soustavy

Čítače e a časovače. v MCU. Čítače a časovače MCU. Obsah

Manuál TimNet Boiler


AirGateway. Návod / rev.0. Strana 1 z 9

Metodika pro učitele

1. Základní nastavení telefonu Vložení SIM karty Zapnutí telefonu a PIN. 2. Kontakty. 3. Volání

AUTORKA Barbora Sýkorová

Vrtání závitů bez vyrovnávací hlavičky (G331, G332)

Lokální a globální extrémy funkcí jedné reálné proměnné

Seminář Java IV p.1/38

ZJEDNODUŠENÝ POSTUP PRO DOPLNĚNÍ A ZASLÁNÍ ŽÁDOSTI O DOTACI A PŘÍLOH K ZAKÁZKÁM PŘES PORTÁL FARMÁŘE

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Metodický list k didaktickému materiálu

OOPR_05. Případové studie

STROPNÍ DÍLCE PŘEDPJATÉ STROPNÍ PANELY SPIROLL

Kazetové pastorky. Příručka prodejce CS-M9000 CS-M9001 CS-M8000 CS-HG CS-HG400-9 CS-HG300-9 CS-HG200-9 CS-HG200-8 CS-HG50-9 CS-HG50-8

Úvod do programovacích jazyků (Java)

JSR tutorial 2 Transformace v JSR-184

Mnohotvarost (polymorfizmus)

IMPORT A EXPORT MODULŮ V PROSTŘEDÍ MOODLE

Teorie grafů. Bedřich Košata

Příloha č. 2 DIW Koncept rozložení stránek. Přílohy č. 1 Návrh, tvorba a implementace dynamického interaktivního webu SPECIFIKACE

PŘÍRUČKA K POUŽÍVÁNÍ APLIKACE HELPDESK

Tvorba trendové funkce a extrapolace pro roční časové řady

Numerická integrace. 6. listopadu 2012

1. Ovládání a řízení rolety

JAK PŘIDAT UŽIVATELE PRO ADMINISTRÁTORY

Modul pro testování elektrických obvodů

Úložiště elektronických dokumentů GORDIC - WSDMS

Staveniště a zařízení staveniště

Dopravní úloha. Jiří Neubauer. Katedra ekonometrie FEM UO Brno

Herní plán. Magic Stars

Pingpongový míček. Petr Školník, Michal Menkina. TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií

EZB dělí časopisy dle dostupnosti do 4 kategorií označené symboly: - volně dostupné. - předplacené tituly dostupné v rámci knihovny

BlueJ a základy OOP. Programování II 1. cvičení Alena Buchalcevová

Organizační styl našich soutěží.

5 Rekurze a zásobník. Rekurzivní volání metody

Programy pro tvorbu GIF animace

Architektura AMD K10. Kozelský Martin, koz230. Datum:

Transkript:

Android OpenGL Animace a ovládání pomocí dotykové obrazovky

Principy animace Animace udává pohyb objektů v čase Může být reprezentována mnoha způsoby Procedurální Pozice objektů se počítá přímo v programu Keyframe Animace je uložená jako data (klíčové snímky pozic objektů v čase) Program potom pozice jen interpoluje Další možnosti animace

Principy animace Pro účely animace je nutné mít přesnou časomíru Nemusí se jednat o absolutníčas a datum Důležité je rozlišení (méně než milisekundy)

Třída Timer Obsahuje jen dvě metody Reset() Nastaví čas na nulu f_time() Vrátíčas od vytvořeníčasovače nebo od Reset()

Třída Timer Implementace na všech platformách podobná Obsahuje čas a poslední časovou značku protected double time = 0; protected long laststamp; Časová značka se získá pomocí laststamp = System.nanoTime nanotime();

Třída Timer Při volání f_time() přečte se další časová značka long newstamp = System.nanoTime nanotime(); spočte se uplynulý čas od poslední značky long delta; if(newstamp >= laststamp) delta = newstamp - laststamp; else { delta = (Long.MAX_VALUE - laststamp) + (newstamp - Long.MIN_VALUE); // přetečení! }

Třída Timer Při volání f_time() uplynulý čas se připočte k času time += delta * 1e-9; poslední časová značka se přepíše aktuální laststamp = newstamp;

Třída Timer Pro každý snímek by se měl určovat čas pouze jednou V průběhu kreslení snímku se čas může změnit a mohlo by dojít k viditelnému oddělení objektů jež se měly pohybovat spolu Toto je obzvlášť rušivé protože rozdíl mezi časy je na pomezí přesnosti časovače a zpravidla mezi snímky kolísá

Jednoduchá animace

Jednoduchá animace Musíme upravit výpočet matice objektu Matrix.setIdentityM setidentitym(modelview, 0); Matrix.translateM translatem(modelview, 0, 0, 0, -2.5f); // nastavení pozice objektu Matrix.rotateM rotatem(modelview, 0, 30, 1, 0, 0); Matrix.rotateM rotatem(modelview, 0, 10, 0, 1, 0); // počáteční rotace Matrix.rotateM rotatem(modelview, 0, timer.f_time() * 10, 0, 1, 0); // + součin úhlové rychlosti a času

Dotyková obrazovka V mobilních aplikacích je často vyžadována interakce uživatele Lze přitom využít stejné principy jako při animaci pohybu objektů v čase Jen čas nahradíme pohybem prstu po dotykové obrazovce

Dotyková obrazovka Na platformě android pomocí třídy OnTouchListener Chceme se dotýkat přímo obrazu, voláme mglview.setontouchlistener setontouchlistener(listener); Potom musíme implementovat třídu, jejíž objektem je právě listener

OnTouchListener Třída s jedinou metodou public boolean ontouch(view view, MotionEvent event) objekt event obsahuje zajímavé metody getaction() typ akce: ACTION_DOWN, ACTION_MOVE a ACTION_UP (stlačení, pohyb, uvolnění) getx(), gety() Souřadnice středu prstu, v pixelech

OnTouchListener Událost MotionEvent typu ACTION_MOVE může obsahovat více než jeden bod pohybu (pohyb je snímán na vysoké frekvenci) getx() a gety() vracejí poslední souřadnice, pro animaci postačující Sled událostí stlačení, pohyb, uvolnění nemusí být nutně zachován, aplikace s tím musí počítat

Rotace objektu dotykem Postačí sledovat pozici dotyku a akumulovat rozdíly v pohybu float mx = 0, my = 0; // poslední hodnoty pozice (v pixelech) float mdeltax = 0, mdeltay = 0; // akumulované změny

Rotace objektu dotykem public boolean ontouch(view view, MotionEvent event) { } if(event.getaction() == MotionEvent.ACTION_DOWN) { mx = event.getx(); my = event.gety(); // uložení pozice dotyku } else if(event.getaction() == MotionEvent.ACTION_MOVE) { } float newx = event.getx(); float newy = event.gety(); // pohyb na novou pozici mdeltax += newx - mx; mdeltay += newy - my; // spočítáme rozdíl a akumulujeme mx = newx; my = newy; // zapamatujeme si novou pozici return true;

Rotace objektu dotykem Proměnné mdeltax a mdeltay lze použít přímo jako úhly na jednotlivých osách, případně jako argument funkce jež tyto úhly určí Při derivaci změn v čase lze jednoduše spočítat i setrvačnost rotace i poté co uživatel uvolnil dotyk, takže ovládaný pohyb se nezastaví najednou ale pozvolna Lze použít diferenci a klouzavý průměr

Konec