Tính lực quay của một sprite 2D


35

Tôi tự hỏi nếu ai đó có một cách thanh lịch để tính toán kịch bản sau đây.

Tôi có một đối tượng có (n) số hình vuông, hình dạng ngẫu nhiên, nhưng chúng tôi sẽ giả vờ rằng chúng đều là hình chữ nhật.

Chúng ta đang đối phó với không có trọng lực, vì vậy hãy xem xét vật thể trong không gian, từ góc nhìn từ trên xuống. Tôi đang tác dụng một lực lên vật tại một hình vuông cụ thể (như minh họa bên dưới).

Áp dụng một lực lượng

Làm cách nào để tính góc quay, dựa trên lực tác dụng, tại vị trí được áp dụng. Nếu áp dụng trong quảng trường trung tâm, nó sẽ đi thẳng. Làm thế nào nó nên cư xử khi tôi di chuyển từ trung tâm? Làm thế nào để tôi tính toán vận tốc quay?


Bạn muốn điều gì xảy ra với lực theo thời gian khi vật thể quay? Có phải nó luôn luôn áp dụng cho cùng một hình vuông theo cùng một hướng? Nó có "quét" dọc theo mép của vật thể không? Với thông tin bạn đang cung cấp, bạn chỉ có thể nhận được lực quay tương ứng (còn gọi là mô-men xoắn) nhưng nếu bạn muốn suy ra tốc độ quay từ đó, bạn sẽ cần cung cấp một xung (chứ không phải là lực) hoặc giải thích cách lực nên được áp dụng khi thời gian đi.
sam hocevar

Thành thật mà nói đây có lẽ sẽ là một câu hỏi tốt hơn cho vật lý.stackexchange.com, vì đây hoàn toàn là một câu hỏi về cơ học cơ bản.
BlueRaja - Daniel Pflughoeft

Câu trả lời:


44

Bạn đang cố gắng tính toán mô-men xoắn. Mô-men xoắn phụ thuộc vào lực F ứng dụng, điểm áp dụng và tâm khối lượng của vật.

1) Trung tâm thánh lễ . Xác định tâm khối lượng của vật.

2) Điểm áp dụng : Xác định điểm mà lực tác dụng lên.

3) Khoảnh khắc : Khoảng cách giữa hai điểm được xác định ở trên.

Point centerofMass
Point applicationPoint
Vector momentArm = applicationPoint - centerofMass

4) Lực góc : Chia lực F của bạn thành hai vectơ trực giao, một song song với đường thẳng trong 3) và một vuông góc. Thành phần song song không ảnh hưởng đến động lượng góc. Cái nào vuông góc nào. Bạn có thể tính toán thành phần song song bằng phép chiếu vector. Bạn có thể trừ nó từ bản gốc để có được thành phần vuông góc. Trong mã giả ( dotcó nghĩa là sản phẩm chấm)

Vector myForce
Vector momentArm

parallelComponent = momentArm * (dot(myForce, momentArm) / dot(momentArm, momentArm))
angularForce = myForce - parallelComponent

5) Mô-men xoắn : Thành phần vuông góc của lực nhân với chiều dài của cánh tay đòn.

Vector angularForce
Vector torque = angularForce * momentArm.Length

Để có được từ Torque đến vận tốc góc:

1) men quán tính : Một định nghĩa về quán tính quay của một vật thể có bao nhiêu. Ví dụ, cần nhiều mô-men xoắn hơn để xoay một thanh dài hơn một quả cầu có cùng khối lượng. Nếu bạn không quan tâm đến chủ nghĩa hiện thực, bạn có thể giả vờ thời điểm quán tính liên quan đến khối lượng hoặc bạn có thể bỏ qua toàn bộ hình dạng và khối lượng của vật thể.

2) Gia tốc góc :

Vector angularAcceleration = torque / momentOfInertia

3) Vận tốc góc : Tốc độ góc sẽ tiếp tục tăng miễn là mô men xoắn được áp dụng. Vì vậy, một công thức đại khái sẽ là "Vận tốc góc tại thời điểm T là tổng tích lũy của gia tốc góc cho đến T. " Điều này được thể hiện bằng mã giả như

void Update(float elapsedSeconds):
    orientation += 0.5 * angularVelocity * elapsedSeconds;
    angularVelocity += angularAcceleration * elapsedSeconds;
    orientation += 0.5 * angularVelocity * elapsedSeconds;

Tuy nhiên, thông tin tuyệt vời, phần mà tôi không rõ ràng nhất là làm thế nào để xác định lực xoắn nên là bao nhiêu. Tôi có tất cả các thành phần tại chỗ như bạn đã mô tả.
jgallant

@Jon: bạn có các thành phần, nghĩa là bạn có các bước 1 - 3 và không thể tìm ra cách tính bước 4? Đó chủ yếu là bước khó khăn. Tôi sẽ thêm một chút chi tiết ở đó.
Jimmy

3
Định hướng là tổng tích lũy của vận tốc góc, orientation += angularVelocity * elapsedSecondslà sai vì nó đánh giá quá cao vận tốc theo bước thời gian, có nghĩa là các khung hình khác nhau sẽ cho các hướng khác nhau. Một công thức thích hợp sẽ là : float oldVelocity = angularVelocity; angularVelocity += angularAcceleration * elapsedSeconds; orientation += 0.5f * (angularVelocity + oldVelocity) * elapsedSeconds;. Ngoài ra, vì không có lực hấp dẫn, tôi khuyên bạn nên sử dụng trung tâm khối lượng của Thay thế. +1 cho lời giải thích rất tốt mặc dù.
sam hocevar

1
Một phần của lực vuông góc sẽ hoạt động để tăng tốc tâm khối lượng, và khi lực được áp dụng gần trung tâm khối lượng hơn, yếu tố này tăng lên. Câu trả lời là tốt và rất rõ ràng, nhưng dường như chưa đầy đủ về vấn đề này.
Sam Watkins

Để trả lời nhận xét của riêng tôi, tôi đang đọc các bài viết về vật lý của Chris Hecker: chrishecker.com/Rigid_body_dynamics . Nó chỉ ra rằng một lực hoặc xung tại bất kỳ điểm nào có tác dụng nổi tiếng lên trung tâm khối lượng theo F = ma hoặc a2 = a1 + p, như thể cơ thể không thể xoay. Điều này tuân theo định luật bảo toàn động lượng tuyến tính. Thành phần của lực vuông góc với bán kính cũng gây ra mô-men xoắn và thay đổi động lượng góc, như được mô tả trong câu trả lời của Jimmy.
Sam Watkins

7

nếu các lực không quá mạnh, việc mô phỏng xoay sẽ dễ dàng hơn nhiều bằng cách sử dụng nhiều dấu chấm và lò xo kết nối chúng. trong trường hợp đó, bạn chỉ cần giả định hình dạng của bạn bao gồm nhiều dấu chấm được kết nối bởi các lò xo. mỗi dấu chấm đại diện cho khối lượng và mọi thứ khác trong hình dạng có khối lượng bằng không.

mùa xuân và chấm

trong hình trên, điểm đen đại diện cho khối lượng và đường màu đỏ đại diện cho lò xo. sau đó để áp dụng lực bạn chỉ cần áp dụng nó vào dấu chấm gần nhất và bạn sẽ thấy đối tượng của mình sẽ xoay như bạn muốn. để làm cho hình dạng của bạn trông giống như một cấu trúc vững chắc, tốt hơn là xác định lò xo có giá trị giảm xóc cao và giá trị k cao.

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.