10/10/2018, 00:06
Giải thuật javascript & tốc độ chuyển động của các đối tượng trên web
Conan đang làm một cái bài tập về sự chuyển động của các đối tượng trên trang web bằng cách sử dụng javascript và css.
Về nguyên tắc chuyển động thì Conan dùng javascript để truy xuất đến đối tượng muốn set chuyển động, và set lại vị trí của đối tượng đó ở cùng một khoản thời gian bằng nhau, tạo ra cảm giác đối tượng đang dịch chuyển một cách liên tục.
Nhưng như vậy thì chỉ có thể làm cho đối tượng chuyển động đều. Giờ conan muốn đối tượng đó ban đầu chuyển động nhanh dần, chậm dần rồi dừng lại thì phân tích giải thuật thế nào nhỉ? Bác nào good giải thuật chỉ giúp Conan với.
Về nguyên tắc chuyển động thì Conan dùng javascript để truy xuất đến đối tượng muốn set chuyển động, và set lại vị trí của đối tượng đó ở cùng một khoản thời gian bằng nhau, tạo ra cảm giác đối tượng đang dịch chuyển một cách liên tục.
Nhưng như vậy thì chỉ có thể làm cho đối tượng chuyển động đều. Giờ conan muốn đối tượng đó ban đầu chuyển động nhanh dần, chậm dần rồi dừng lại thì phân tích giải thuật thế nào nhỉ? Bác nào good giải thuật chỉ giúp Conan với.
Bài liên quan
x = xo + vo.t + 0.5at^2
Thử theo đó mà làm xem sao ! Hoặc là làm như sau : sau mỗi lần timeout thì ta tăng hoặc giảm giá trị 1 biến toàn cục time hoặc tăng hay giảm biến toàn cục px nào đó để cho nó thay đổi vị trí với lượng px thay đổi (nhưng nó sẽ không còn mượt đi nữa nếu số lượng px khi đạt 1 giá trị nào đó mà hình ảnh chuyển động ít hơn 24/s hay số lượng px tăng theo cấp số cộng hoặc nhân quá nhanh)
x = x0 + v0*t + 1/2a*t^2
Với:
- x là điểm đích.
- x0 là điểm đầu.
- v0 là vận tốc đầu.
- t là thời gian.
- a là gia tốc.
Nếu chuyển động nhanh dần đều thì gia tốc a > 0 (set giá trị dương).
Nếu chuyển động chậm dần đều thì gia tốc a < 0 (set giá trị âm)
Nhớ là |a| không nên quá cao (>10).
[=========> Bổ sung bài viết <=========]
[=========> Bổ sung bài viết <=========]
Ví dụ nha. Bạn cần làm 1 vật thể bay nhanh dần rồi tới gần đích thì chậm dần và dừng lại.
Mình nói đại tư duy của mình nha:
đầu tiên vật bay có tốc độ ban đầu (cho nó = 0 cho dễ hiểu). Mỗi một lần gọi hàm set vị trí của vật thể để tạo cảm giác vật thể chạy. Mỗi lần này bạn cộng vào 1 giá trị vào tọa độ. Cái giá trị dc cộng này mỗi lần dc gọi thì nó cũng tự tăng lên 1 ít.
Ban đầu tọa độ x của vật thể = 0.
sau lần set tọa độ đầu tiên thì:
toa_do++;//Tang toc do
toa_do = toa_do_ban_dau + toc_do
Ko biết đến chỗ này bạn có hiểu dc ko. Nhưng nôm na là cứ sau 1 lần gọi set toạ độ thì giá trị dc cộng vào toạ độ cũng biến thiên tăng lên.
Đó là tăng tốc. Còn giản tốc thì tùy điều kiện bạn đặt ra thôi.
Ví dụ. khi chạy dc 500 Km thì bắt đầu giảm tốc. Lúc này bật cái cờ báo giảm tốc. Và đến phần biện luận if() ta sẽ cho tốc độ giảm giần (toc_do--).
Khi toc do giam = 0 là lúc vật thể dừng lại.
Xin lỗi. Nói thật. Nhiều khi muốn viết ra tư duy của mình để người khác hiểu cũng khó thật. Thôi thì đành giao lưu giữa các tư duy với nhau = demo là dễ hiểu nhất.
bạn tính khoảng cách từ vị trí đứng đến vị trí mốc rồi bạn căn tốc độ tăng giảm cho phù hợp để khi tới đích v=0 chúc bạn thành công