Làm thế nào tôi có thể di chuyển một vật thể trong một quỹ đạo vô cực của hoàng tử


28

Khi tôi muốn di chuyển đối tượng xung quanh điểm tôi làm:

    point.x *= cosf(timer.timeElapsed);
    point.y *= sinf(timer.timeElapsed);

Làm thế nào để làm cho điểm di chuyển trên quỹ đạo tám hoặc vô cực?

Câu trả lời:



61

Như Marton lưu ý, có một số "đường cong tám" có thể phù hợp với nhu cầu của bạn. Có lẽ đơn giản nhất là lemniscate của Gerono , trong đó có tham số:

x = cos(t);
y = sin(2*t) / 2;

và trông như thế này:

Lemniscate của hoạt hình Gerono

Tuy nhiên, lemniscate của Bernoulli có thể trông dễ chịu hơn; nó có một tham số rất giống với lemniscate của Gerono, ngoại trừ việc cả hai trục đều được thu nhỏ bởi một yếu tố 1/(sin(t)^2 + 1) = 2/(3 - cos(2*t)):

scale = 2 / (3 - cos(2*t));
x = scale * cos(t);
y = scale * sin(2*t) / 2;

Nó trông như thế này:

Lemniscate của Bernoulli hoạt hình

(Ảnh động được tạo bằng Maple 13, được nén bằng GIF.)


Cảm ơn tất cả mọi người, vì sự ủng hộ của bạn, đã mang lại cho tôi huy hiệu vàng đầu tiên của tôi ở đây trên gamedev! :-)
Ilmari Karonen

1
+1 cho không chỉ đăng các liên kết, mà cả các công thức và đồ họa (có nguồn).
rootl Focus

2
Như là, đây sẽ là câu trả lời được chấp nhận.
Brian H.

-1

Tôi ngẫu nhiên tìm thấy một cái khác sử dụng công thức này:

x2=y2+0.1x2.8

Theo âm mưu của Wolfram Alpha :

một nửa biểu tượng vô cực


Không giống như các câu trả lời khác, câu trả lời này hiện không được trình bày ở dạng tham số cho phép chúng ta dễ dàng đẩy vị trí về phía trước theo thời gian t. Tôi khuyên bạn nên bao gồm một mô tả về cách bạn sẽ sử dụng công thức này để định vị một đối tượng chuyển động theo thời gian.
DMGregory

-4

((x+1)2+y2)((x1)2+y2)=1

một nửa biểu tượng vô cực

Tích của khoảng cách từ bất kỳ điểm nào trên đường cong đó đến (-1, 0) và đến (1,0) là không đổi và bằng 1.


4
Câu trả lời này cung cấp một công thức mô hình hóa một đường cong như vậy, nhưng không phải là một phương pháp để "di chuyển một đối tượng" theo cách mà nó đi theo đường cong đó. Vui lòng xem xét xây dựng câu trả lời để chỉ ra cách bạn sẽ sử dụng toán học này để di chuyển một đối tượng trong trò chơi.
DMGregory
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.