Альтернативный метод использует метод 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));
Уравнение: 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-й порядок, Рунге-Кутта ('стандартный' метод для научных приложений) для улучшенных алгоритмов.
Ну, это зависит от того, является ли ускорение постоянным. Если это - это, просто
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 слишком груб.
Можно погуглить его. Я нашел это: http://www.ugrad.math.ubc.ca/coursedoc/math101/notes/applications/velocity.html
, Но если Вы не хотите читать, это:
p (t) = x (0) + v (0) *t + (1/2) t^2
, где
Принятие Вас имеет дело с постоянным ускорением, формула:
расстояние = (initial_velocity * время) + (ускорение * время * время) / 2
, где
расстояние является расстоянием, переместилось
, initial_velocity является начальной скоростью (нуль, если тело первоначально в покое, таким образом, можно отбросить этот термин в этом случае)
, время является временем
, ускорение является (постоянным) ускорением
, Удостоверяются, что использовали надлежащие единицы при вычислении, т.е. метры, секунды и так далее.
А очень хорошая книга по теме Физика для Разработчиков игр .
Принятие постоянного ускорения и начальной скорости v0,
x(t) = (1/2 * a * t^2) + (v0 * t)