Конечно, кажется, что все, что вам нужно сделать, это численно интегрировать ускорение дважды, чтобы получить пройденное расстояние. Например, посмотрите на
Рассчитать положение ускоряющегося тела через определенное время
Обратите внимание, что вам нужно будет вычесть гравитацию из измеренного ускорения, чтобы получить кинетическое ускорение, которое вы должны интегрировать. Что касается того, как это сделать, re: комментарий GoatRider: я мог бы попытаться сохранить последнее измеренное ускорение, величина которого была равна гравитации (я думаю, что это 1 в единицах iPhone?). Затем для каждого измерения ускорения, которое вы производите, величина которого больше 1, вычтите последнее известное ускорение силы тяжести - это должно быть вычитание вектора - и используйте его в качестве кинетического ускорения. Конечно, это предполагает, что пользователь удерживает телефон в одном и том же положении во время пролистывания, что, я думаю, было бы приблизительно верно.
К сожалению, нет никакой техники, которую вы могли бы использовать, чтобы различать гравитационное ускорение и кинетическое ускорение в целом, то есть решительный пользователь всегда мог найти способ обмануть любой алгоритм, который вы могли бы придумать. (Общая информация: это называется принцип эквивалентности , и это основа теории общей теории относительности Эйнштейна)