Я побачив декілька ігрових навчальних посібників та 2d ігор, де попереднє положення об’єкта зберігалось у стані замість вектора швидкості. Потім швидкість обчислюється кожним кадром як різниця позицій.
Які переваги цього методу?
Я побачив декілька ігрових навчальних посібників та 2d ігор, де попереднє положення об’єкта зберігалось у стані замість вектора швидкості. Потім швидкість обчислюється кожним кадром як різниця позицій.
Які переваги цього методу?
Відповіді:
Не знаючи точно підручників чи книг, які ви прочитали, ось що я можу вам сказати.
Якщо бути більш точним з точки зору визначення фізики: напрямок вектора обчислюється як різниця між поточним положенням і останньою позицією. Швидкість вектора дорівнює часу, поділеному на час, що минув при переході з однієї позиції в іншу. Дивіться: http://www.physicsclassroom.com/class/1DKin/Lesson-1/Speed-and-Velocity
Однак, коли минувший час вважається загальним "1 кадром", тобто від останнього кадру до струму, то швидкість вектора та напрямок вектора стають однаковими. У псевдокоді:
direction = current_position - past_position
elapsed_time = 1 frame
velocity = direction / elapsed_time
Отже, загалом, основна причина зберігання позиції в останньому кадрі та отримання позиції в поточному кадрі полягає в тому, що це може бути або єдиним способом, або найдешевшим способом пізнання оновленого напрямку (а отже, оновленої швидкості), тобто напрямок руху в поточному кадрі.
Припустимо, ви зберігаєте напрямок (або навіть швидкість) у заданому кадрі. У наступному кадрі єдиний спосіб дізнатись, чи змінився напрямок (або навіть швидкість) - якщо ви обчислили його ще раз. Причина полягає в тому, що попередній напрямок або попередня швидкість не дають вам знати поточний напрямок або швидкість струму у випадку, якщо рух змінюється від одного кадру до іншого.
Тепер, беручи до уваги підручники, які ви згадали у коментарі до власного питання, це стає ще зрозумілішим. В одному з навчальних посібників автори розповідають, що:
Тепер давайте навчимо нашу частинку, як рухатися з інтеграцією Верле. Це просто фантазійний спосіб сказати, що ми дізнаємось, наскільки швидко рухається наша частинка, порівнявши її позицію цього кадру з його останньою рамкою. Чому? Оскільки це дає нам неявну швидкість - будь-яка зміна поточного положення частинки автоматично оновить її швидкість
Отже, як ви бачите, зберігання позиції останнього кадру дозволяє, як я вже говорив вище, оновлений обчислення швидкості в поточному кадрі, коли об'єкт (у підручнику це частинка) змінює положення. Якщо ви зберегли лише напрямок або швидкість в останньому кадрі, ви не змогли б так легко оновити його у випадку, якщо позиція змінилася з минулого на поточний кадр. Тому, як також зазначалося в іншому підручнику, до якого ви пов’язані, збереження попередньої позиції дозволяє автоматично оновлювати швидкість при зміні позицій.