Декларация о контроле - PullRequest
       3

Декларация о контроле

0 голосов
/ 12 октября 2011

Мне нужна помощь в математике.Допустим, у меня есть объект, которым пользователь может манипулировать (перемещать).После того как пользователь переместил объект, я бы хотел, чтобы объект продолжал двигаться и замедлялся до остановки.

Пример, когда пользователь перемещает объект из точки A в B с общим расстоянием 100 пикселей по оси X послепользователь отпускает палец, я хочу, чтобы объект продолжал двигаться и замедлялся до остановки из точки B в точку C.

Итак, как я могу рассчитать новое расстояние от точки C, если я установлю время для негозамедлиться и остановиться через 2сек?

Спасибо!

Ответы [ 3 ]

1 голос
/ 12 октября 2011

d = ½at² + v i t + d 0

d 0 - это точка, в которой пользователь «отпускает»,Рассчитайте v i от движения, прежде чем отпустить.Установите для чего-то отрицательного;вам придется возиться с этим, чтобы почувствовать себя правильно.Приращение t от 0 до 2. d - то, где объект будет в конечном итоге.Помните, что a и v i являются векторами , указывающими в противоположных направлениях, а d 0 и d являются точками .

0 голосов
/ 12 октября 2011

Если все, что вам нужно, это расстояние от B до C , это просто. Если объект прошел расстояние N пикселей (скажем, 100) от A до B в k секундах, то расстояние от B до C будет н / к.

Если вы хотите указать из C , чтобы A, B и C были целыми числами на оси x, C = B + (B-A) /k.

Если вы хотите оживить движение, чтобы можно было обновлять позицию x на каждом шаге по времени dt (скажем, 0,1 секунды), а затем начать (с B ) с помощью v = Н / к, и на каждом шаге

x += v * dt
v -= N * dt/(2 * k)

(Обязательно используйте числа с плавающей точкой, а не целые числа, иначе ошибка округления разрушит эффект.)

0 голосов
/ 12 октября 2011

Если ускорение, а, является постоянным, вы можете использовать формулу:

d = ½at²

При t = 2s вы получите d = 2a.

Ускорение достаточно для ускорения до v за 2 с, так что а = v / 2.

Вы получаете:

d = v

То есть, если v = 100 пикселей в секунду, объект должен продолжать работать со скоростью 100 пикселей, если он останавливается через 2 секунды при постоянном замедлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...