Projektgruppe Visual Analytics - Medieninformatik und Multimedia ...
Projektgruppe Visual Analytics - Medieninformatik und Multimedia ...
Projektgruppe Visual Analytics - Medieninformatik und Multimedia ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
10.4 Multitouch-Framework 187<br />
der Schwerpunkt der Geste vor <strong>und</strong> nach der Veränderung berechnet. Der<br />
Schwerpunkt wird dabei mittels folgender Formel berechnet:<br />
x =<br />
n<br />
∑<br />
k=0<br />
X k<br />
, für n > 0, sonst 0 (10.5)<br />
n<br />
n ist die Anzahl der Blobs in BlobsProperty <strong>und</strong> x die X-Koordinate aus der<br />
Blob.Position-Property.<br />
Die Differenz zwischen diesen zwei Punkten wird an die GUI-Elemente<br />
weitergegeben. Hierdurch wird gewährleistet, dass Verschieben unabhängig von<br />
der Anzahl der Finger ist <strong>und</strong> dessen Bewegungsrichtung erkannt wird.<br />
Scale Wenn ein Finger auf der Tischoberfläche die Position ändert <strong>und</strong> der Finger dabei<br />
am weitesten Rechts, Links, Oben oder Unten auf dem GUI-Element steht, wird<br />
ein Scale-Event gesendet. Die Differenz zwischen altem <strong>und</strong> neuem Zustand wird<br />
an das GUI-Element weitergegeben.<br />
Rotate Genauso wie Scale wird das Rotate-Event nur dann abgefeuert, wenn ein Finger<br />
auf der Tischoberfläche die Position ändert <strong>und</strong> der Finger dabei am weitesten<br />
Rechts, Links, Oben oder Unten auf dem GUI-Element steht. Im Unterschied<br />
zum Scale-Event wird jedoch die Winkeldifferenz zwischen dem alten Zustand<br />
der gegenüberliegenden Finger <strong>und</strong> dem neuen Zustand der gegenüberliegenden<br />
Finger an das GUI-Element weitergegeben.<br />
BigBlob Das BigBlob-Event wird gefeuert, wenn die Größe eines Blobs einen<br />
spezifizierten Schwellwert überschreitet. Dieser kann über die Einstellungsdatei<br />
des Multitouch-Frameworks eingestellt werden. Der Schwellwert muss in<br />
Abhängigkeit zu den Einstellungen von Community Core Vision ermittelt werden.<br />
Bei einem TouchDown ist die Blob-größe anfangs meist recht klein, da sich diese<br />
erst durch Druck aufbaut. Sobald die Blob-größe den Schwellwert überschreitet,<br />
wird ein BigBlob-Event gesendet.<br />
10.4.4 Touch<br />
Zur Bereitstellung der Funktionalität von Touch-Capture, die der WPF-Funktion<br />
Mouse-Capture nachempf<strong>und</strong>en ist, implementiert die Klasse Touch die Methoden<br />
CaptureTouch <strong>und</strong> ReleaseTouchCapture. Da Mouse-Capture allerdings bekannt<br />
ist, wird auf die Erklärung dieser Methoden nicht weiter eingegangen. Um jedoch<br />
Kollisionen zwischen dem nativen Mouse-Capture <strong>und</strong> dem eigenen Touch-Capture zu<br />
verhindern, musste in der Klasse Multitouch das bool’sche Property isMultittouch<br />
eingeführt werden. Ist dieses auf true gesetzt, werden nur Multitouch-Event-Handler<br />
eingeb<strong>und</strong>en, andernfalls nur Mouse-Event-Handler.