This shows you the differences between two versions of the page.
research:articles:progress_20111105 [2011/11/16 09:19] chiragmehta [Problem] |
research:articles:progress_20111105 [2019/11/08 03:40] (current) |
||
---|---|---|---|
Line 3: | Line 3: | ||
==== Background ==== | ==== Background ==== | ||
- | The primary goal of the [[:home|KType]] project is to improve communication for people with [[research:disabilities|disabilities]]. The KType [[http://ktype.net|iPad app]] presents the user with an on-screen keyboard with large keys that can be re-arranged easily for comfort and efficiency. The problem is that many users find it difficult to navigate a touch-screen user-interface due to unsteady hands. | + | The primary goal of the [[:home|KType]] project is to improve communication for people with [[research:disabilities|disabilities]]. The KType [[https://ktype.net|iPad app]] presents the user with an on-screen keyboard with large keys that can be re-arranged easily for comfort and efficiency. The problem is that many users find it difficult to navigate a touch-screen user-interface due to unsteady hands. |
==== Multi-Touch Issues ==== | ==== Multi-Touch Issues ==== | ||
Line 35: | Line 35: | ||
hand_align = one of [righthand-upright, lefthand-upright, | hand_align = one of [righthand-upright, lefthand-upright, | ||
righthand-turned , lefthand-turned] | righthand-turned , lefthand-turned] | ||
- | + | ||
min_distance = min_x = min_y = 9999999 | min_distance = min_x = min_y = 9999999 | ||
max_x = max_y = 0 | max_x = max_y = 0 | ||
- | + | ||
for each touchpoint p | for each touchpoint p | ||
min_x = min(min_x, p.x) | min_x = min(min_x, p.x) | ||
Line 44: | Line 44: | ||
min_y = min(min_y, p.y) | min_y = min(min_y, p.y) | ||
max_y = max(max_y, p.y) | max_y = max(max_y, p.y) | ||
- | + | ||
corner_x = if hand_align is righthand then min_x else max_x | corner_x = if hand_align is righthand then min_x else max_x | ||
corner_y = if hand_align is upright then min_y else max_y | corner_y = if hand_align is upright then min_y else max_y | ||
- | + | ||
best_position = [corner_x, corner_y] | best_position = [corner_x, corner_y] | ||
- | + | ||
for each touchpoint p | for each touchpoint p | ||
new_distance = (corner_x - p.x)^2 + (corner_y - p.y)^2 # no need to take the square-root, save CPU cycles | new_distance = (corner_x - p.x)^2 + (corner_y - p.y)^2 # no need to take the square-root, save CPU cycles | ||
Line 55: | Line 55: | ||
min_distance = new_distance | min_distance = new_distance | ||
best_position = [p.x, p.y] | best_position = [p.x, p.y] | ||
- | + | ||
return best_position | return best_position | ||
+ |