Explorar el Código

Finished introduction and first chapter structure of report.

Taddeus Kroes hace 13 años
padre
commit
ac33c94ee2
Se han modificado 1 ficheros con 104 adiciones y 213 borrados
  1. 104 213
      docs/report.tex

+ 104 - 213
docs/report.tex

@@ -1,6 +1,6 @@
 \documentclass[10pt,a4paper]{article}
 \documentclass[10pt,a4paper]{article}
 
 
-\usepackage[dutch]{babel}
+\usepackage[english]{babel}
 \usepackage[utf8]{inputenc}
 \usepackage[utf8]{inputenc}
 \usepackage{amsmath,hyperref,graphicx,booktabs,float}
 \usepackage{amsmath,hyperref,graphicx,booktabs,float}
 
 
@@ -16,14 +16,17 @@
 Name:           & Taddeüs Kroes\\
 Name:           & Taddeüs Kroes\\
 Student number: & 6054129\\
 Student number: & 6054129\\
 E-mail address: & \texttt{taddeus.kroes@student.uva.nl}\\
 E-mail address: & \texttt{taddeus.kroes@student.uva.nl}\\
-Adres:          & Wethouder van Wijckstraat 40, 1107 BR Amsterdam\\
+Address:        & Wethouder van Wijckstraat 40, 1107 BR Amsterdam\\
 Phone number:   & 06-23437025\\
 Phone number:   & 06-23437025\\
-supervisor:     & Dr. R.G. Belleman (UvA)\\
+Supervisor:     & Dr. R.G. Belleman (UvA)\\
 \end{tabular}}
 \end{tabular}}
 
 
 \begin{document}
 \begin{document}
 
 
 \maketitle
 \maketitle
+\abstract{
+    % TODO
+}
 \pagebreak
 \pagebreak
 \tableofcontents
 \tableofcontents
 \pagebreak
 \pagebreak
@@ -37,265 +40,153 @@ this method of interaction, the programmer needs an abstraction of the raw data
 provided by the touch driver of the device. This abstraction exists in several
 provided by the touch driver of the device. This abstraction exists in several
 multi-touch application frameworks like Nokia's
 multi-touch application frameworks like Nokia's
 Qt\footnote{\url{http://qt.nokia.com/}}. However, applications that do not use
 Qt\footnote{\url{http://qt.nokia.com/}}. However, applications that do not use
-these frameworks consequently have no access to multi-touch events.
+these frameworks have no access to their multi-touch events.
 
 
 % Aanleiding
 % Aanleiding
 This problem was observed during an attempt to create a multi-touch
 This problem was observed during an attempt to create a multi-touch
 ``interactor'' class for the Visualization Toolkit
 ``interactor'' class for the Visualization Toolkit
-(VTK\footnote{\url{http://www.vtk.org/}}).
+(VTK\footnote{\url{http://www.vtk.org/}}). Because VTK provides the application
+framework here, it is undesirable to use an entire framework like QT
+simultaneously only for its multi-touch support.
 
 
 % Ruw doel
 % Ruw doel
-The goal of this thesis is to define a universal multi-touch event triggering mechanism.
-
-- Om een universeel multi-touch event 'gesture'-detectie te definiëren.
+The goal of this project is to define a universal multi-touch event triggering
+mechanism. To test the definition, a reference implementation is written in
+Python.
 
 
 % Setting/afbakening
 % Setting/afbakening
-Dit onderzoek heeft als einddoel een Proof of Concept te maken, namelijk een
-toepassing van de universele multi-touch gesture-detectie in een VTK interactor.
-
-\subsection{Opbouw verslag}
-
-In hoofdstuk \ref{sec:vraagstelling} wordt de probleemstelling vertaald naar
-een doelstelling en een centrale vraagstelling.
-
-Hoofdstuk \ref{sec:deelvragen} verdeelt de centrale vraagstelling in een
-aantal deelvragen, die elk kort worden toegelicht.
-
-Na de vraagstelling wordt in hoofdstuk \ref{sec:afbakening} de afbakening van
-het onderzoeksgebied aangegeven.
-
-Vervolgens wordt de gebruikte onderzoeksmethodiek beschreven in hoofdstuk
-\ref{sec:methodiek}, bestaande uit een faseverdeling en een globale
-tijdsplanning.
+To tests multi-touch interaction properly, a multi-touch device is required.
+The University of Amsterdam (UvA) has provided access to a multi-touch table
+from PQlabs. The table uses the TUIO
+protocol\footnote{\url{http://www.tuio.org/}} to communicate touch events.
 
 
-Tot slot wordt in hoofdstuk \ref{sec:gerelateerd} een blik geworpen op een
-gerelateerd project.
+The scope of this thesis includes the design of an multi-touch triggering
+mechanism, a reference implementation of this design, and its integration into
+a VTK interactor.
+To be successful, the design should allow for extensions to be added to any
+implementation. The reference implementation is a Proof of Concept with some
+simple touch gestures that are used by the VTK interactor.
 
 
-\emph{- Rest v/d hoofdstukken beschrijven}
+    \subsection{Structure of this document}
 
 
-\section{Vraagstelling}
-\label{sec:vraagstelling}
+    % TODO
 
 
-\subsection{Doelstelling}
+\section{Definition of the problem}
 
 
-Het doel van dit onderzoek is om een bijdrage te leveren aan het ontwikkelen
-van een universeel datavisualisatie-programma.
-
-In dit projectvoorstel zal naar het programma worden verwezen met de afkorting
-``UVA'' (Universal Visualizaton Appliance).
-
-\subsection{Centrale vraag}
-
-Hoe kan een Proof of Concept voor een universeel datavisualisatie-programma
-worden gerealiseerd, gericht op 3D-visualisatie en met multi-touch interactie?
-
-\subsection{Deelvragen}
-\label{sec:deelvragen}
+The goal of this thesis is to create a multi-touch event triggering mechanism
+for use in a VTK interactor. The design of the mechanism must be universal.
 
 
+To design such a mechanism properly, the following questions are relevant:
 \begin{itemize}
 \begin{itemize}
-
-\item \emph{Welke taal (en evt. framework) zijn de beste keuze om het
-programma in te ontwikkelen?}
-
-Het kiezen van een taal is vooral afhankelijk van de beschikbaarheid van zgn.
-``libraries'' met multi-touch ondersteuning. Voor
-Python\footnote{\url{http://python.org}} bestaat bijvoorbeeld het
-applicatieframework Kivy\footnote{\url{http://kivy.org}}.
-
-\item \emph{Hoe werkt de communicatie met de multi-touch tafel?}
-
-Het is nodig om te weten wat voor ``events'' er worden ondersteund door
-frameworks als Kivy, om te bepalen welke touch-gebaren kunnen worden
-geïmplementeerd.
-
-\item \emph{Welke soorten 3D datasets zijn er en welke daarvan zijn relevant
-om te ondersteunen in het Proof of Concept?}
-
-De term ``3D dataset'' is een generieke benaming. Omdat de multi-touch
-tafel in het bezit van de UvA is, zal het onderzoek zich in eerste
-instantie richten op bestandsformaten die op de UvA worden gebruikt om de kans op
-daadwerkelijk gebruik van het programma te vergroten.
-
-\item \emph{Hoe kunnen de verschillende 3D datasets worden gevisualiseerd?}
-
-Is het bijvoorbeeld makkelijk om OpenGL commando's te gebruiken? En wanneer er
-vele duizenden vectoren zijn, is het dan nuttig om bijvoorbeeld clusters van
-vectoren te groeperen tot een enkele vector?
-
-\item \emph{Hoe kunnen multi-touch gebaren worden gebruikt in de interactie
-met 3D datasets?}
-
-Er moet een intuïtieve manier worden ontwikkeld voor de interactie met 3D data
-op een 2D scherm.
-
-\item \emph{Wat is een goede structuur die toestaat om in de toekomst nieuwe
-visualisatiemethodes toe te voegen?}
-
-Een universeel programma moet flexibel zijn zodat ontwikkelaars gemakkelijk
-nieuwe methodes kunnen toevoegen. Een voorbeeld van een al bestaand is
-Eclipse. Elk component van Eclipse wordt gezien is een ``plugin''. Zo'n plugin
-heeft een vast formaat waardoor het kan worden gebruikt in combinatie met
-andere plugins. Een soortgelijke structuur is wellicht nuttig om te hanteren
-in het UVA-programma.
-
-De structuur moet flexibel genoeg zijn om een verschillende frameworks te
-kunnen gebruiken in verschillende visualisatiemethodes. Kivy maakt
-bijvoorbeeld gebruik van een eigen main loop (een functie die zorgt voor het
-functioneren van de grafische interface). De loop is ``blocking'', dus is het
-mogelijk nodig om gebruik te maken van threads voor continue taken.
-
+    \item What is the input of the mechanism? Different touch drivers have
+        different API's. To be able to support different drivers (which is
+        highly desirable), there should probably be a translation from the
+        driver API to a fixed input format.
+    \item How can extendability be accomplished? The set of supported events
+        should not be limited to a single implementation, but an application
+        should be able to define its own custom events.
+    \item Can events be shared with multiple processes at the same time? For
+        example, a network implementation could run as a service instead of
+        within a single application, triggering events in any application that
+        needs it.
+    \item Is performance an issue? For example, an event loop with rotation
+        detection could swallow up more processing resources than desirable.
 \end{itemize}
 \end{itemize}
 
 
-\subsection{Afbakening}
-\label{sec:afbakening}
-
-Het onderzoek zou waarschijnlijk het best tot zijn recht komen wanneer het zou
-worden uitgevoerd door meerdere onderzoekers. Omdat er echter slechts een
-enkele onderzoeker is, en er een beperkte tijd voor het onderzoek beschikbaar
-is, is besloten tot het maken van een Proof of Concept.
-
-%Omdat het UVA-programma expliciet als opdracht is geformuleerd, wordt in dit
-%onderzoek aangenomen dat er nog geen universeel programma voor
-%datavisualisatie bestaat.
-
-\subsection{Programma-onderdelen}
-
-\emph{- Multitouch-library}
-
-\emph{- front-end in VTK}
-
-\section{Relatie met vergelijkbaar onderzoek}
-\label{sec:gerelateerd}
-
-Er is gezocht naar programma's met een soortgelijke strekking met
-het doel er inspiratie uit op te doen, zo is het programma ``UDAV'' gevonden.
+\section{Hypothesis}
 
 
-UDAV\footnote{\url{http://udav.sourceforge.net/}} is een programma waarmee
-data op verschillende manieren kan worden gevisualiseerd met behulp van
-MathGL\footnote{\url{http://mathgl.sourceforge.net/}}. Om dit programma te
-kunnen gebruiken is kennis nodig van de MathGL syntax, waar het UVA-programma
-juist als eigenschap heeft dat er weinig kennis nodig is van de gebruiker.
-Het zou echter wel een optie zijn om visualisatiemogelijkheden in de MathGL
-library onder te brengen in een module voor het UVA-programma.
+To accomplish extendability, an object-oriented approach is an obvious choice.
+% TODO
 
 
-\section{Onderzoeksmethodiek}
-\label{sec:methodiek}
+\section{Related work}
 
 
-\subsection{Methode}
+% TODO
 
 
-Het UVA-programma is een nieuw soort programma, er is nog geen bestaande
-variant van. Dit onderzoek maakt daarom gebruik van een experimentele
-onderzoeksmethode\footnote{\url{http://artikelen.foobie.nl/verslagen-scripties/onderzoeksmethode-samenvatting/}}:
-tijdens de ontwikkeling van het programma wordt geëxperimenteerd met de
-beschikbare opties voor implementatie, en wordt bepaald in hoeverre deze
-opties voldoen aan de vooraf gestelde eisen.
+\section{Methods}
 
 
-\subsection{Fases}
+% TODO
 
 
-Het onderzoek kan worden verdeeld in vier hoofdfases:
+    \subsection{Preliminary inquiries}
 
 
-\subsubsection*{Oriëntatiefase}
+        \subsubsection{The TUIO protocol}
 
 
-De eerste fase is de oriëntatie op het werken met de multi-touch interface, en
-op het weergeven van voorbeeld-datasets in 3D (gebruik makend van de OpenGL-
-bindings\footnote{\url{http://kivy.org/docs/api-kivy.graphics.opengl.html}} in
-Kivy).
+        % TODO
+        % Vertellen dat het met UDP werkt
+        % wat komt er dan binnen?
+        % wat doet de implementatie ermee?
 
 
-Er moet bijvoorbeeld worden uitgezocht welke touch-gebaren worden herkend. Dit
-kan worden getest met behulp van een testprogramma dat een bericht toont op
-het moment dat een event optreedt.
+    \subsection{Experiments}
 
 
-Ook is het nuttig om een testprogramma te maken dat met behulp van de eerder
-genoemde OpenGL-bindings een 3D plot maakt van een voorbeeld-dataset, om
-bekend te worden met de OpenGL functionaliteit.
+    % testimplementatie met taps, rotatie en pinch. Hieruit bleek:
+    % - dat het gebruik van threads soms onvermijdelijk is
+    % - dat er verschillende manieren zijn om bijv. "rotatie" te
+    %   detecteren, (en dat daartussen onderscheid moet kunnen worden
+    %   gemaakt)
+    % - dat detectie van verschillende soorten gestures moet kunnen
+    %   worden gescheiden, anders wordt het een chaos.
+    % -
 
 
-Daarnaast moet worden bepaald welke soorten 3D data gaan worden gebruikt, en
-hoe het formaat hiervan eruit ziet.
+    % Tekenprogramma dat de huidige state tekent en waarmee
+    % transformatie kan worden getest
+    % Link naar appendix "supported events"
 
 
-\subsubsection*{Ontwerpfase}
+    % Proof of Concept: VTK interactor
 
 
-Met de kennis die is opgedaan tijdens de oriëntatiefase kan een ontwerp worden
-gemaakt van het kerncomponent van het programma, en de aansluiting hiervan op
-de 3D/multi-touch visualisatiecomponenten.
+% -------
+% Results
+% -------
 
 
-\subsubsection*{Implementatiefase}
+\section{Server structure}
 
 
-Deze fase bevat het daadwerkelijk programmeren van de ontworpen onderdelen.
-Tijdens deze fase zullen ook ontwerpproblemen op een gedetailleerd niveau
-worden opgelost. Denk aan het invullen van de grafische interface met knoppen
-en eventuele widgets.
+\subsection{Input server}
 
 
-\subsubsection*{Verslaglegging}
+% TODO
+% vertaling driver naar point down, move, up
+% TUIO in reference implementation
 
 
-Het is de bedoeling dat al tijdens de eerste drie fases wordt gewerkt aan de
-basis van de afstudeerscriptie. Tijdens die fases kunnen een aantal deelvragen
-worden beantwoord.
-Er zal een logboek worden bijgehouden in de vorm van Version Control. Het
-gebruikte Version Control systeem is Git\footnote{\url{http://git-scm.com/}}.
-Bij de ``commits'' worden ``commit messages'' ingevuld zodat zichtbaar is op
-welk moment (in welke commit) bepaalde taken zijn uitgevoerd.
+\subsection{Gesture server}
 
 
-Tijdens de laatste fase worden de antwoorden op de deelvragen waar nodig
-aangevuld, en worden de overige hoofdstukken geschreven.
+    \subsubsection{Windows}
 
 
-\section{Het TUIO-protocol}
+    % TODO
+    % toewijzen even aan deel v/h scherm:
+    % TUIO coördinaten zijn over het hele scherm en van 0.0 tot 1.0, dus moeten
+    % worden vertaald naar pixelcoördinaten binnen een ``window''
 
 
-\emph{- Vertellen dat het op een UDP poort binnenkomt}\\
-\emph{- wat komt er dan binnen?}\\
-\emph{- wat doet de implementatie ermee?}
+    \subsubsection{Trackers}
 
 
-\section{Multitouch-library}
+    % TODO
+    % event binding/triggering
+    % extendability
 
 
-\subsection{Threads}
 
 
-\emph{- Meerdere threads nodig omdat er 3 loops zijn}\\
-\emph{- Daemon threads voor stabiliteit}
+\section{Reference implementation}
 
 
-\subsection{Gebaarherkenning}
+% TODO
+% draw.py
+% VTK interactor
 
 
-\subsubsection*{Rotatie}
+\section{Conclusions}
 
 
-\emph{- Tangens-vergelijking voor rotatie om centroid}
+% TODO
+% Windows zijn een manier om globale events toe te wijzen aan vensters
+% Trackers zijn een effectieve manier om gebaren te detecteren
+% Trackers zijn uitbreidbaar door object-orientatie
 
 
-\subsubsection*{``Pinch''}
+\section{References}
 
 
-\emph{- Relatief verschil in afstand tot centroid}
+% TODO: BibTex
 
 
-\subsubsection*{Slepen met meerdere vingers}
+\appendix
 
 
-\emph{- meerdere vingers in dezelfde richting genereert drag event met beweging van
-centroid}
+\section{Schema of mechanism structure}
+\label{app:schema}
 
 
-\subsection{Afvuren ``event''}
+% TODO: "dia"
 
 
-\emph{- Event binding uitleggen}\\
-\emph{- Waarom deze manier handig is}\\
-\emph{- Eventueel: beschrijven welk design pattern dit is}
+\section{Supported events in reference implementation}
+\label{app:supported-events}
 
 
-\subsection{Toewijzing aan ``event window''}
-
-\emph{- TUIO coördinaten zijn over het hele scherm en van 0.0 tot 1.0, dus moeten worden vertaald naar pixelcoördinaten binnen een ``window''.}
-
-\section{Experimenten}
-
-\emph{- draw.py}\\
-\emph{- UVA front-end}
-
-\section{Conclusies}
-
-
-
-\section{Referenties}
-
-\begin{itemize}
-\item Homepage Robert Belleman \url{http://staff.science.uva.nl/~robbel/}
-\item Python homepage \url{http://python.org}
-\item Definitie experimentele onderzoeksmethode \url{http://artikelen.foobie.nl/verslagen-scripties/onderzoeksmethode-samenvatting/}
-\item Kivy homepage \url{http://kivy.org}
-\item Kivy OpenGL-bindings documentatie \url{http://kivy.org/docs/api-kivy.graphics.opengl.html}
-\item Git homepage \url{http://git-scm.com/}
-\item UDAV homepage \url{http://udav.sourceforge.net/}
-\item MathGL homepage \url{http://mathgl.sourceforge.net/}
-\end{itemize}
+% TODO
 
 
 \end{document}
 \end{document}