Эмуляция просмотра сетки Apple Watch - PullRequest
0 голосов
/ 25 февраля 2020

Сценарий таков, что пользователь перетаскивает объект на сенсорном экране. Я хочу рассчитать положение объекта, когда палец тянет его по экрану. Я также хочу учесть любое ускорение от скорости пальца и замедлить объект, когда пользователь разрешает go объекта.

Аналогично представлению сетки приложения Apple Watch. Здесь перемещаемым «объектом» является вся сетка приложений. apple watch view

На нерегулярных, но частых интервалах мне дают прикосновение. Событие касания состоит из двух частей информации x и t.

, где x - это положение пальца в пикселях, а t - это отметка времени в миллисекундах.

(мне также дано y, но давайте пока проигнорируем это).

Например,

 x  |  t
157 | 684
164 | 685
171 | 695
177 | 702
182 | 710
189 | 721
196 | 727
202 | 739
208 | 745
214 | 755
221 | 762
235 | 779
242 | 790
250 | 796
258 | 805
266 | 815
274 | 822
283 | 832
291 | 840
301 | 848
318 | 868

При первом событии объект неподвижен, поэтому я используйте это событие, поскольку исходная исходная позиция и скорость 0.

. Для всех последующих событий я вычисляю новую позицию объекта следующим образом:

object.x = event.x - prevEvent.x + object.x

Я могу вычислить ускорение в любой точке как

a = (event.velocity - prevEvent.velocity) / t

Где event.velocity равно

event.velocity = (event.x - prevEvent.x) / t

Как использовать это ускорение для рассчитать новую позицию? И как мне объяснить трение и замедление?

Я смутно помню Уравнения SUVAT из 10 лет go, и у меня приятный ренессанс моего подросткового физика, но у меня нет пока нет решения.

Я бы с удовольствием взял подсказки, если вы чувствуете, что я близок к ответу.

...