$1 Unistroke Recognizer in JavaScript
Jacob O. Wobbrock,1 Andrew D. Wilson,2 and Yang Li1
1University of Washington   and   2Microsoft Research

This page implements the "$1 Unistroke Recognizer." Upon loading this page, only one template is defined for each unistroke below, but you can add more or define your own with the buttons beneath the canvas. Unistrokes should be regarded as fully rotation, scale, and position invariant. See our UIST 2007 paper (PDF) or a detailed pseudocode listing.

Also see the new $N Multistroke Recognizer built upon $1. $N can do everything $1 does and a lot more, including multistroke gesture recognition, proper handling of one-dimensional gestures (e.g., lines), direction-agnostic strokes, and bounded rotation invariance. $N also includes two important optimizations for speed, one built-in and one optional.

Make strokes on this canvas. If a misrecognition occurs, add the misrecognized unistroke as an example of the intended type.

The <canvas> element is not supported by this browser.
Add last unistroke as example of existing type:
Add last unistroke as example of custom type:
Delete all user-defined examples:  

$1 Links and Downloads

$1 Implementations by Others