Vật lý 2D: lưu trữ vị trí trước đó so với lưu trữ vận tốc


9

Tôi đã thấy một số sách hướng dẫn trò chơi 2d và sách trong đó vị trí trước đó của một đối tượng được lưu trữ ở trạng thái thay vì vectơ vận tốc. Vận tốc sau đó được tính mỗi khung là một sự khác biệt giữa các vị trí.

Những lợi thế của phương pháp đó là gì?


2
Bạn có thể liên kết đến các hướng dẫn trong câu hỏi, cho bối cảnh?
Anko

Tôi chia sẻ sự tò mò cùng của Anko
DNK drone.vs.drones

Hướng dẫn này đề cập rằng đây được gọi là tích hợp Verlet. Tôi tìm thấy bài viết này , trong đó những lợi thế của Verlet được giải thích. Về cơ bản, nó dễ dàng hơn để xử lý các va chạm và các ràng buộc phức tạp.
Terzalo

@Terzalo Xem phiên bản cập nhật của câu trả lời của tôi để xem liệu nó có giúp hiểu logic chung đằng sau trường hợp cụ thể trong tay không
MAnd

Câu trả lời:


1

Không biết chính xác các hướng dẫn hoặc sách bạn đã đọc, đây là những gì tôi có thể nói với bạn.

Nói chính xác hơn về mặt định nghĩa vật lý: hướng vectơ được tính là chênh lệch giữa vị trí hiện tại và vị trí cuối cùng. Vận tốc vectơ bằng nhau chia cho thời gian trôi qua khi đi từ vị trí này sang vị trí khác. Xem: http://www.physicsclassroom.com/group/1DKin/Lesson-1/Speed-and-Velocity

Tuy nhiên, khi thời gian trôi qua được coi là "khung 1" chung, tức là từ khung cuối cùng đến dòng điện, thì vận tốc vectơ và hướng vectơ trở nên giống nhau. Trong mã giả:

direction = current_position - past_position
elapsed_time = 1 frame
velocity = direction / elapsed_time

Vì vậy, nói chung, lý do chính để lưu trữ vị trí trong khung cuối cùng và nhận vị trí trong khung hiện tại là vì đó có thể là cách duy nhất hoặc cách rẻ nhất để biết hướng cập nhật (và do đó là tốc độ cập nhật), tức là hướng chuyển động trong khung hiện tại.

Giả sử rằng bạn lưu trữ hướng (hoặc thậm chí là vận tốc) trong một khung nhất định. Trong khung tiếp theo, cách duy nhất để biết hướng (hoặc thậm chí là vận tốc) đã thay đổi là nếu bạn tính lại. Lý do là hướng trước hoặc vận tốc trước đó không cho bạn biết hướng hiện tại hoặc vận tốc hiện tại trong trường hợp chuyển động từ khung này sang khung khác.

Bây giờ, có tính đến các hướng dẫn bạn đã đề cập trong bình luận cho câu hỏi của riêng bạn, nó sẽ trở nên rõ ràng hơn. Trong một trong những hướng dẫn, các tác giả nói rằng:

Bây giờ, hãy dạy cho hạt của chúng ta cách di chuyển với tích hợp Verlet. Đó chỉ là một cách thú vị để nói rằng chúng ta sẽ tìm hiểu xem hạt của chúng ta di chuyển nhanh như thế nào bằng cách so sánh vị trí của khung này với vị trí của khung cuối cùng. Tại sao? Bởi vì điều đó mang lại cho chúng ta vận tốc ngầm - mọi thay đổi đối với vị trí hiện tại của hạt sẽ tự động cập nhật vận tốc của nó

Vì vậy, như bạn có thể thấy, việc lưu trữ vị trí khung cuối cùng cho phép, như tôi đã nói ở trên, phép tính cập nhật vận tốc trong khung hiện tại khi đối tượng (trong hướng dẫn là hạt) thay đổi vị trí. Nếu bạn chỉ lưu hướng hoặc vận tốc trong khung cuối cùng, bạn sẽ không thể cập nhật dễ dàng trong trường hợp vị trí thay đổi từ quá khứ sang khung hiện tại. Do đó, như được chỉ ra trong hướng dẫn khác mà bạn đã liên kết, lưu vị trí trước đó cho phép tự động cập nhật vận tốc khi vị trí thay đổi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.