Вычислите положение ускоряющегося тела после определенного [закрытого] времени

Альтернативный метод использует метод setMinimumFractionDigits из класса NumberFormat.

Здесь вы в основном указываете, сколько чисел вы хотите отобразить после десятичной точки.

Таким образом, вход 4.0 будет производить 4.00, если ваше указанное количество равно 2.

Но если ваш вход Double содержит больше указанной суммы, он будет принимать указанную минимальную сумму, затем добавьте еще одну цифру, округленную вверх / вниз

Например, 4.15465454 с минимальным количеством из 2 будет выдавать 4.155

NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
Double myVal = 4.15465454;
System.out.println(nf.format(myVal));

Попробовать в Интернете

20
задан Robert Gamble 12 November 2008 в 03:53
поделиться

5 ответов

Уравнение: s = единое время + (1/2) t^2

, где s является положением, u является скоростью в t=0, t время и постоянного ускорения.

, Например, если автомобиль начинается стационарный, и ускоряется в течение двух секунд с ускорением 3m/s^2, он перемещается (1/2) * 3 * 2^2 = 6 м

, Это уравнение прибывает из интеграции аналитически уравнений, указывающих, что скорость является уровнем изменения положения, и ускорение является уровнем изменения скорости.

Обычно в программирующей игру ситуации, можно было бы использовать немного отличающуюся формулировку: в каждом кадре переменные для скорости и положения интегрируются не аналитически, но численно:

s = s + u * dt;
u = u + a * dt;

, где dt является длиной кадра (измеряемое использование таймера: 1/60-я приблизительно секунда). Этот метод имеет преимущество, что ускорение может варьироваться вовремя.

Редактирование Несколько человек отметили, что Euler метод численного интегрирования (как показано здесь), хотя самое простое для демонстрации с, имеет довольно плохую точность. См. скорость Verlet (часто используемый в играх), и 4-й порядок, Рунге-Кутта ('стандартный' метод для научных приложений) для улучшенных алгоритмов.

34
ответ дан 29 November 2019 в 23:37
поделиться

Ну, это зависит от того, является ли ускорение постоянным. Если это - это, просто

s = ut+1/2 at^2

, Если не постоянный, Вы должны численно интегрированные. Теперь существует множество методов, и ни один из них не разобьет выполнение этого вручную для точности, поскольку они - все в конечном счете приближенные решения.

самое легкое и наименее точное метод Euler's . Здесь Вы делите время на дискретные блоки, названные временными интервалами, и выполняете

v[n] = v[n-1] * t * a[t]

n, индекс, t размер временного интервала. Положение так же обновляется. Это только действительно хорошо для тех случаев, где точность не все это важное. Специальная версия метода Euler's приведет к точному решению для движения снаряда (см. Wiki), поэтому в то время как этот метод сыр, это может идеально подойти для некоторого suituations.

наиболее распространенный метод численного интегрирования, используемый в играх и на некоторых моделированиях химии, скорость Verlet , которая является специальной формой более универсального метода Verlet. Я рекомендовал бы этому, если Euler's слишком груб.

7
ответ дан 29 November 2019 в 23:37
поделиться

Можно погуглить его. Я нашел это: http://www.ugrad.math.ubc.ca/coursedoc/math101/notes/applications/velocity.html

, Но если Вы не хотите читать, это:

p (t) = x (0) + v (0) *t + (1/2) t^2

, где

  • p (t) = положение во время t
  • x (0) = положение в нуле
  • v (0) времени = скорость в нуле времени (если у Вас нет скорости, можно проигнорировать этот термин)
  • = ускорение
  • т = текущий itme
1
ответ дан 29 November 2019 в 23:37
поделиться

Принятие Вас имеет дело с постоянным ускорением, формула:

расстояние = (initial_velocity * время) + (ускорение * время * время) / 2

, где

расстояние является расстоянием, переместилось

, initial_velocity является начальной скоростью (нуль, если тело первоначально в покое, таким образом, можно отбросить этот термин в этом случае)

, время является временем

, ускорение является (постоянным) ускорением

, Удостоверяются, что использовали надлежащие единицы при вычислении, т.е. метры, секунды и так далее.

А очень хорошая книга по теме Физика для Разработчиков игр .

1
ответ дан 29 November 2019 в 23:37
поделиться

Принятие постоянного ускорения и начальной скорости v0,

x(t) = (1/2 * a * t^2) + (v0 * t)
1
ответ дан 29 November 2019 в 23:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: