Я бы сделал это, записав «идеальный» свинг и построив график внутри данных, затем сохранив эти данные в ресурсе в вашем приложении и отобразив движение во времени внутри приложения, а затем сравнил бы их, используя сравнение векторов.Оцените движение за последние X секунд для каждого сохраненного внутри движения и используйте предельное значение для недопустимых движений.Затем тот, кто набрал наибольшее количество баллов, получает оценку.
Как только успешное движение обнаружено, вы должны пометить этот промежуток времени как «использованный» и, следовательно, неприменимый для дальнейшего подсчета очков (это останавливает несколько движенийот выбора одним движением контроллера).
Сравнение может быть выполнено путем нахождения средней разницы в точках в ключевых точках во времени.то есть.проверьте каждую точку с интервалами в 5 миллисекунд и определите разницу в 3 векторах ускорения, среднее значение суммы этих различий может быть результатом.Жест с наименьшим количеством очков - лучший матч.