Their implementation is quite clean, it really is a nice clean algorithm. It takes reading it to understand the type of shapes (templates) that work best and also as a user how best to draw them. I added a demo that shows you as you draw what it's internal state is and best guess so far:
http://francoislaberge.com/outlines/demo/index.html
I really love the feedback in the demo as to what the recognizer is guessing. If my Palm had that I believe I might have been even faster at writing graffiti. It allows you to quickly correct a "letterform" to get the desired glyph.
I haven't thought about it in a long time, but I still think that these gestures could be a great shortcut interface for a multi-touch OS, especially with pressure sensitivity. A deep press could activate the gesture recognizer.
My brain can't help but think that we've kinda gone full circle here when simple-stroke gesture recognition is thought of as an interesting new interface idea. I mean, it's been about twenty years since a little app called Graffiti from a little company called Palm gave a brand new way of interfacing with an Apple handheld. Not knocking you at all, because it's a pretty cool app, just commentary on how history repeats itself.
I'm confused by the name too. It seemed abundantly clear that they were hoping to collect a micropayment from people who used the software, until I read more and it turned out to just be the name of the software.
> To enable novice programmers
to incorporate gestures into their UI prototypes, we present
a “$1 recognizer” that is easy, cheap, and usable almost
anywhere in about 100 lines of code
It seems (from my experiments) that recognition treats all rotations of objects equally. So for instance it recognizes right bracket as left if drawn backwards. I think there should be a caveat warning there.
I think it's a neat toy, but frankly I don't understand what attracts GUI designers to gestures. They seem lot more complicated than just buttons (even if you would have to push an extra button to get the menu), they are not obvious and you have to learn them to do correctly. Am I missing something?
I like gestures for the same reason I like keyboard shortcuts: you don't have to aim. There's a tradeoff in UIs: large number of targets with few actions, or large number of actions with few targets. An example of the former is a typical web page, where every link is a target and the only actions are open and open-in-tab. An example of the latter is vim, where there are only a couple targets (buffer and command bar) and every key is an action.
I built a game around this recognizer ("Magic Touch": https://www.youtube.com/watch?v=Ze9k0lseb-8 ).
It's a very neat way to do shape recognition in real time. It's very well suited for mobile devices although it's far from being perfect. The interesting bit was to make the recognition lenient enough but still good enough to recognize the shapes accurately. Think about the difference between a 'V' and a 'U'.
Anyway I would love to see more real world uses of this clever recognizer!
I think this just recognizes your gestures (i.e. it does not recognize shapes you draw). I added an example of a clockwise triangle (using the site's "Add as example of existing type") and it was then able to recognize clockwise triangles.
Sam here. The direction/ordering of the stroke seems important, I wonder why?
They could 'fix' this by adding reverse forms of each of the strokes. I wonder why they haven't? Does doing so drastically reduce the detection accuracy?
I've played around with this some, and the recognition isn't perfect, but I'm very impressed with how well it can pick up a new pattern from even just one example.
When I used this code for a simple application, I made a small change to the recognized to limit the rotational invariance so that a gesture that was rotated more than a certain angle threshold would not match.
Add your drawing as a template, and try again. The point of the $1-family of recognizers is not what they recognize 'out of the box' but that they're very simple to code, and it's easy to extend them by adding example gestures.
Their implementation is quite clean, it really is a nice clean algorithm. It takes reading it to understand the type of shapes (templates) that work best and also as a user how best to draw them. I added a demo that shows you as you draw what it's internal state is and best guess so far: http://francoislaberge.com/outlines/demo/index.html