Я пытаюсь найти метод для расчета скорости и ускорения отслеживаемого объекта, скажем, падающего мяча. Я использую Processing 2, чтобы сделать эту программу, и я знаю расстояние от камеры до объекта, и он может вычислить его положение в каждом кадре во время движения.
Для расчета скорости я использовал эту формулу (все расчеты в пикселях): VelocityX=(PositionX - LastPositionX)/дельта-время.
И что-то подобное с ускорением: AccelerationX=(VelocityX - LastVelocityX)/дельта-время
Затем я изменил дельту времени с помощью кадров. Итак, теперь у меня есть скорость и ускорение в пикселях на кадр, но мой вопрос в том, как я могу преобразовать эти пиксели на единицу кадра, например, в мм/с? к более интуитивным единицам, подобным этому.
Я также рассчитываю положение в пикселях, но после этого делаю преобразование в миллиметры, но я немного не понимаю, как это сделать для скорости и ускорения.
// Get the current time
currTime = frameCount;
deltaTime = (currTime - prevTime);
// Remember current time for the next frame
prevTime = currTime;
// Calculate velocity in X and Y directions (pixels / frame)
if (lastMovingX != Float.MAX_VALUE) {
velX = (PX - lastMovingX) / deltaTime;
velY = (PY - lastMovingY) / deltaTime;
}
// Save the current frame position for the next calculation
lastMovingX = PX;
lastMovingY = PY;
if (lastVelX != Float.MAX_VALUE) {
accelX = (velX - lastVelX) / deltaTime;
accelY = (velY - lastVelY) / deltaTime;
}
lastVelX = velX;
lastVelY = velY;