| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- \documentclass[10pt,a4paper]{article}
- \usepackage[english]{babel}
- \usepackage[utf8]{inputenc}
- \usepackage{amsmath,hyperref,graphicx,booktabs,float}
- % Link colors
- \hypersetup{colorlinks=true,linkcolor=black,urlcolor=blue}
- % Paragraph indentation
- \setlength{\parindent}{0pt}
- \setlength{\parskip}{1.5ex plus 0.5ex minus 0.2ex}
- \title{Bachelor thesis\\Universal multi-touch event mechanism}
- \author{\begin{tabular}{ll}
- Name: & Taddeüs Kroes\\
- Student number: & 6054129\\
- E-mail address: & \texttt{taddeus.kroes@student.uva.nl}\\
- Address: & Wethouder van Wijckstraat 40, 1107 BR Amsterdam\\
- Phone number: & 06-23437025\\
- Supervisor: & Dr. R.G. Belleman (UvA)\\
- \end{tabular}}
- \begin{document}
- \maketitle
- \abstract{
- % TODO
- }
- \pagebreak
- \tableofcontents
- \pagebreak
- \section{Introduction}
- % Ruwe probleemstelling
- Multi-touch interaction is becoming increasingly common, mostly due to the wide
- use of touch screens in phones and tablets. When programming applications using
- 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
- multi-touch application frameworks like Nokia's
- Qt\footnote{\url{http://qt.nokia.com/}}. However, applications that do not use
- these frameworks have no access to their multi-touch events.
- % Aanleiding
- This problem was observed during an attempt to create a multi-touch
- ``interactor'' class for the Visualization Toolkit
- (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
- 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
- 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.
- 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.
- \subsection{Structure of this document}
- % TODO
- \section{Definition of the problem}
- % Hoofdvraag
- 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.
- % Deelvragen
- To design such a mechanism properly, the following questions are relevant:
- \begin{itemize}
- \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}
- \section{Hypothesis}
- To accomplish extendability, an object-oriented approach is an obvious choice.
- % TODO
- \section{Related work}
- % TODO
- \section{Methods}
- % TODO
- \subsection{Preliminary inquiries}
- \subsubsection{The TUIO protocol}
- % TODO
- % Vertellen dat het met UDP werkt
- % wat komt er dan binnen?
- % wat doet de implementatie ermee?
- \subsection{Experiments}
- % 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.
- % -
- % Tekenprogramma dat de huidige state tekent en waarmee
- % transformatie kan worden getest
- % Link naar appendix "supported events"
- % Proof of Concept: VTK interactor
- % -------
- % Results
- % -------
- \section{Server structure}
- \subsection{Input server}
- % TODO
- % vertaling driver naar point down, move, up
- % TUIO in reference implementation
- \subsection{Gesture server}
- \subsubsection{Windows}
- % 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''
- \subsubsection{Trackers}
- % TODO
- % event binding/triggering
- % extendability
- \section{Reference implementation}
- % TODO
- % draw.py
- % VTK interactor
- \section{Conclusions}
- % 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
- \section{References}
- % TODO: BibTex
- \appendix
- \section{Schema of mechanism structure}
- \label{app:schema}
- % TODO: "dia"
- \section{Supported events in reference implementation}
- \label{app:supported-events}
- % TODO
- \end{document}
|