Я думаю, что ответ на это зависит от вашего определения кругового движения и от того, как вы собираетесь его использовать. Например, вы хотите знать, сколько градусов по кругу прошел пользовательский палец? Или вас интересует только завершение круга? Какая степень точности вам нужна? Вы хотите, чтобы движение было прервано, или это должно быть скорее касание> нарисовать круг> касание (другими словами, одно движение)?
Один из подходов состоит в том, чтобы определить группу прямоугольных зон вдоль окружности и определить, касается ли пользователь их последовательно. Это может дать вам направление и приблизительную индикацию угла.
Другой подход заключается в сохранении точек между касанием и касанием и выполнением некоторой фильтрации и подгонки кривой, чтобы выяснить, какая форма аппроксимируется точками. Сначала фильтр нижних частот с использованием базового фильтра FIR, а затем посмотрите на dx и dy от точки к точке. Круг (как серия дуг) должен попадать в определенный диапазон изменения уклона от точки к точке, в противном случае у вас есть другая форма.
Еще один подход заключается в использовании нейронной сети, чтобы взять точки и сказать вам, как выглядит форма.