2013-04-11 2 views
0

В принципе, мне любопытно, будут ли переменные xVel и yVel работать наилучшим образом, или если я должен использовать переменную velocity и direction.Самый эффективный способ обработки скорости

Кроме того, это то, как он будет обрабатываться на обновление: (psuedocode) Для xVel и yVel:

x += xVel; 
y += yVel; 

Для velocity и direction:

x += velocity * (cos(direction)); 
y += velocity * (sin(direction)); 

Примечание: Я не уверен, если второй будет работать правильно. У меня нет навыков тригонометрии.

Итак, первый способ более эффективен, или второй? И я делаю второй совершенно неправильно?

ответ

1

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

В основном я использую это правило: если вы имеете дело с ускорениями X и Y, а также с скоростями, то вы хотите придерживаться прямоугольных координат и использовать переменные delta-x и delta-y. Если вы хотите обработать вращение объекта, и угол вычисляется регулярно, тогда вы можете использовать полярность.

Это зависит от приложения.

0

Оба способа одинаково эффективны, поскольку они должны дать тот же ответ. Тем не менее, я хотел бы добавить дополнительный термин числового времени шага, чтобы сделать его лучше числовое «моделированием»:

x += xVel * timeStep; 
y += yVel * timeStep; 

Или

x += totalVel * cos(direction) * timeStep; 
y += totalVel * sin(direction) * timeStep; 

Оба способом дал бы те же результаты, однако время расчета будет вероятно, расходятся. Если количество вычислений для одного метода будет намного больше, чем другое, будет очень вероятно, что другой будет быстрее. Но если вы не уверены, что вы всегда можете запустить тестовый скрипт, в котором вы тестируете каждый метод несколько раз и отслеживаете время, необходимое ЦП для их выполнения.

Смежные вопросы