Multi-Touch
Ian Stirling
openmoko at mauve.plus.com
Wed Apr 4 01:43:17 CEST 2007
mathew davis wrote:
<snip>
> * The output is the center of the bounding box of the touched area
> * The touch point skips instantly on double touch
> * Pressure has almost no effect on a single touch, but not so on a
> double touch. The relative pressures will cause a significant
> skewing effect towards the harder touch. You can easily move the
> pointer along the line between your two fingers by changing the
> relative pressure.
>
> So my question now is do we have access to the bounding box? If we can
> get at the coordinates of the bounding box can we not figure out if the
> bounding box is shrinking or growing? The iphone has a camera which
Ok - I wrote the above, and it could do with some clarification.
The 'center of the bounding box' is the only thing the current hardware
has access to.
It is 'computed' solely in the resistances of the touchscreen, not
externally.
Pressing harder with one finger than the other, or pressing over a
larger area gives a (possibly slightly, possibly greatly, depending on
design) skew towards the area with the higher contact pressure * area.
(And it may not be as simple as contact pressure*area, it probably hits
a limit at a small pressure)
When measuring the touch position this is basically what is done.
The screen is composed of two resistive layers, one flexible plastic,
one glass, with linear electrodes on the X or Y axes (parallel
electrodes on the same layer).
Connect X+ and X- to battery + and -.
This now creates a voltage gradient vertically across the screen - say
0V at the bottom, and 1V at the top.
Now, when someone presses the screen at a point, this is connected to
the 'Y' electrodes, and the voltage (say 0.5V) can be read out and
converted into 'X=320'. (repeat for Y+ Y- and an X for other axes)
If the screen is pressed over multiple points, or areas, it's a little
more complex.
You have now current flowing in addition to through the X layer, flowing
parallel to the X layer, through the Y layer - this will distort the
nice smooth gradient, and make it so that instead of rising smoothly
from 0 to 1V as you go up the display, it rises half as steeply over the
touched area.
This assumes that the contact resistance is zero though, and it's not.
As the resistance at a touch point drops, the sensed point moves towards
that point,
A not-terrible mechanical analogy is to take a hacksaw blade, and put it
on a towel.
pressing (gently) on it on it at several points will (usually) make only
one point furthest down.
More information about the community
mailing list