A method for gesture recognition, comprising: a) receiving sample motion data S including vector components from one or more sensors associated with ahandheld control device wherein the sample motion data is related to movement of the control device; b) computing an energy value from the sample motion data and a baseline value for the motion data; c) updating the baseline value if the energy value is less than a calm energy threshold; d) adjusting the sample motion data based on the updated baseline value; e) calculating a local variance of the sample motion data over a sliding window of a predetermined number of variance samples VS, wherein the local variance LV is given by: LV = VS ⋅ Σ S 2 + ΣS 2 / VS 2; f) beginning recording one or more values of the sample motion data for an input gesture if a scalar value of the local variance is greater than a threshold for beginning recording; g) recording one or more values of the sample motion data for an input gesture and calculating the scalar value of the local variance over the sliding window using the one or more values of the sample motion data recorded for an input gesture; h) stopping the recording of the one or more values of the sample motion data for an input gesture if the scalar value of the local variance is less than a threshold for stopping recording; i) computing a total variance for the sample values in the input gesture, wherein the total variance is calculated with ranks assigned to components of the total variance corresponding to different ones of the vector components, wherein the total variance TV is given by: TV = VS ⋅ Σ S 2 + ΣS 2 / GS 2; j) calculating a correlation using the sample values in the gesture and sample values in one or more catalogue gestures, wherein the correlation is a measure of how well the input gesture matched the catalogue gesture, the calculating step including comparing input gesture component ranks to catalogue gesture component ranks; k) determining whether the input gesture matches one of the one or more catalogue gestures based on the correlation; and l) taking action if the input gesture matches the one of the one or more catalogue gestures. a) receiving sample motion data S including vector components from one or more sensors associated with ahandheld control device wherein the sample motion data is related to movement of the control device; b) computing an energy value from the sample motion data and a baseline value for the motion data; c) updating the baseline value if the energy value is less than a calm energy threshold; d) adjusting the sample motion data based on the updated baseline value; e) calculating a local variance of the sample motion data over a sliding window of a predetermined number of variance samples VS, wherein the local variance LV is given by: LV = VS ⋅ Σ S 2 + ΣS 2 / VS 2; f) beginning recording one or more values of the sample motion data for an input gesture if a scalar value of the local variance is greater than a threshold for beginning recording; g) recording one or more values of the sample motion data for an input gesture and calculating the scalar value of the local variance over the sliding window using the one or more values of the sample motion data recorded for an input gesture; h) stopping the recording of the one or more values of the sample motion data for an input gesture if the scalar value of the local variance is less than a threshold for stopping recording; i) computing a total variance for the sample values in the input gesture, wherein the total variance is calculated with ranks assigned to components of the total variance corresponding to different ones of the vector components, wherein the total variance TV is given by: TV = VS ⋅ Σ S 2 + ΣS 2 / GS 2; j) calculating a correlation using the sample values in the gesture and sample values in one or more catalogue gestures, wherein the correlation is a measure of how well the input gesture matched the catalogue gesture, the calculating step including comparing input gesture component ranks to catalogue gesture component ranks; k) determining whether the input gesture matches one of the one or more catalogue gestures based on the correlation; and l) taking action if the input gesture matches the one of the one or more catalogue gestures.