Làm thế nào để tôi tính toán xoay do ma sát nảy?


15

Tiếp theo từ câu hỏi trước của tôi : Tôi có quả bóng nảy thực sự từ các bề mặt mà nó chạm vào. Bây giờ tôi muốn làm cho nó quay tròn từ ma sát của cú đánh .

Hiển thị điều này là đủ đơn giản: Tôi xoay quả bóng bằng tốc độ góc của nó mỗi tích tắc và áp dụng cùng một vòng quay khi nó được hiển thị.

Khi một quả bóng đập vào tường, tôi biết rằng tốc độ quay bị ảnh hưởng bởi ...

  • tốc độ ban đầu của quả bóng khi chạm vào bề mặt
  • các hệ số ma sát của quả bóng và bề mặt (hằng số vật lý)
  • các góc tới (góc giữa vector vận tốc đến của quả bóng và bề mặt bình thường).

Góc tới được xác định gần đúng bằng sản phẩm chấm của vectơ vận tốc và thoát của bóng. (1 có nghĩa là độ xoáy cao, -1 có nghĩa là không có độ xoáy và mọi thứ khác tương đối ở giữa)

Nhân tất cả các yếu tố trên với nhau và đảm bảo rằng chúng sau đó được chuyển thành phạm vi 0 - 1 và được nhân với tốc độ quay tối đa, quả bóng dường như đáp ứng với tốc độ quay như mong đợi. Ngoại trừ một điều: Nó sẽ luôn xoay theo chiều kim đồng hồ (vì các giá trị dương).


Đây có phải là một phương pháp tốt? Bạn có thể nghĩ về một cách đơn giản hơn?

Nếu phương pháp này có vẻ tốt, tôi còn thiếu gì? Làm thế nào để tôi biết khi nào quả bóng nên quay ngược chiều kim đồng hồ?

Câu trả lời:


2

Phương pháp của bạn rất hay, vì nó rất đơn giản. Một điều bạn có thể cần là sự phụ thuộc vào cú xoáy trước đó vào quả bóng mà bạn không tính đến. Quả bóng quay đại diện cho năng lượng quay, do đó, một mô phỏng thực tế có thể sẽ phải bảo tồn nó cùng với các năng lượng khác.

Tuy nhiên, nếu quả bóng không quay khi va chạm, tôi không thể tưởng tượng được một tình huống trong đó nó bắt đầu xoay theo hướng của góc tới. Đó là, "chiều kim đồng hồ" hoặc "ngược chiều kim đồng hồ" nên liên quan đến bất kỳ phía nào của góc tới bình thường.

Tôi nghĩ đơn giản là nhân kết quả với vectơ hướng x ban đầu (+1 nếu đi từ trái sang phải, -1 nếu đi từ phải sang trái) nên làm điều đó.

Chỉnh sửa: Bạn có thể sử dụng sản phẩm chéo cho việc này. Incident cross normalchỉ cung cấp một vectơ theo hướng Z (nếu chúng ta ở trên mặt phẳng 2D xy). Nhìn vào phần tử z: nếu nó dương, cách tiếp cận của quả bóng sẽ khiến nó quay theo chiều kim đồng hồ. Nếu nó âm, bóng nên quay ngược chiều kim đồng hồ.


Này eli Trước tiên, tôi đang xem xét độ xoáy ban đầu của quả bóng, chỉ quên đề cập đến nó trong bài viết của tôi Thứ hai, tôi không nghĩ rằng hệ thống x-direction sẽ hoạt động. Tôi đã thử điều đó, nhưng nếu quả bóng chạm vào bề mặt từ bên dưới sang trái, vectơ x sẽ là -1, điều đó có nghĩa là quay ngược chiều kim đồng hồ, trong khi thực tế, nó phải quay theo chiều kim đồng hồ
codemonkey

Làm thế nào để bạn tính đến độ xoáy ban đầu của quả bóng? Nếu nó quay rất nhanh, nó có thể tự phóng đi theo một hướng hoàn toàn khác. Vấn đề với sản phẩm dot trong trường hợp của bạn là nó sử dụng cosine (một hàm chẵn). Bạn cần một cái gì đó khác để đặt dấu hiệu của mối quan hệ giữa các vectơ của bạn (sự cố và bình thường). Bạn có thể sử dụng một sản phẩm chéo (sản phẩm vector) cho mục đích này. Tôi đã chỉnh sửa câu trả lời của mình để bao gồm một phương pháp sản phẩm chéo.
eli

đọc lại câu trả lời sau khi chỉnh sửa tôi thích nó. Đã thử nó và nó hoạt động khá tốt. Về spin ban đầu, tôi chỉ nói về việc làm cho vòng quay thay đổi dần dần ... vì đối với spin ban đầu ảnh hưởng đến vector thoát, tốt, đó là bước tiếp theo của tôi :)
codemonkey

Ouch, chỉnh sửa là một trong 3 giải pháp khác nhau mà tôi đề xuất và tôi đã giải thích lý do tại sao bạn phải làm điều đó (dấu chấm chỉ cho độ lớn chứ không phải hướng của góc). Than ôi, tôi nên súc tích hơn tôi đoán.
Kaj

xin lỗi vì điều đó, nó đã đánh trượt tôi ... không có ý định xúc phạm :)
codemonkey

3

Đầu tiên lấy tiếp tuyến bề mặt từ bề mặt bình thường: t = (ny, -nx)

Sau đó, bạn có thể nhận được thành phần vận tốc dọc theo bề mặt là vt = v dot t .

Bây giờ bạn có thể tính vòng quay của quả bóng: w = | ( bình thường * r) chéo vt |, trong đó r là bán kính của quả bóng.

Ở đây tôi giả sử quả bóng không có quán tính quay và bắt đầu quay ngay lập tức với tốc độ nếu nó lăn dọc theo bề mặt. Bạn có thể sử dụng một hệ số ma sát để làm cho nó thực tế hơn và, nếu bạn muốn, hãy tính đến quán tính quay của quả bóng.


Cảm ơn câu trả lời Danik. Tôi đã tính đến quán tính quay của quả bóng (bằng cách thêm nó vào vòng quay mới) và ma sát của bề mặt như một hệ số được nhân với tổng tốc độ quay. Ma sát càng nhiều, tốc độ quay càng cao, phải không?
codemonkey

2

Ókay, điều này nghe có vẻ ngu ngốc nhưng bạn không sử dụng sản phẩm chấm của vectơ bóng và bề mặt bình thường và chỉ thực hiện một cung tròn để tính góc là bạn? Bởi vì sau đó góc sẽ là dương cho dù đó là dương (lên đến 90 độ) hay âm (ditto) vì cosin đối xứng quanh 0.
Nếu đây trường hợp thì thay vì sử dụng bình thường của mặt phẳng, hãy sử dụng chính hướng của mặt phẳng và trừ 90 độ từ góc, do đó, 0 đến 180 sẽ trở thành -90 đến +90 độ (hoặc -half PI thành + nửa PI nếu bạn nghiêng hoàn toàn).


Vâng, hãy xem xét trường hợp này: x + ve là đúng, y + ive bị hỏng; Vectơ bề mặt S = (1,0); chúng ta có hai vectơ vận tốc va chạm V1 = (3,4) đánh từ trên xuống, nên xoay quả bóng theo chiều kim đồng hồ & V2 = (3, -4) đánh từ bên dưới, nên xoay quả bóng ngược chiều kim đồng hồ. Bây giờ các quy tắc cho cả hai vectơ sẽ lần lượt là (3 / 5,4 / 5) & (3/5, -4 / 5). Bây giờ chấm sản phẩm cho cả hai vectơ sẽ là 3/5. góc tạo ra sẽ là arccos (3/5) = 53 độ cho các vectơ CẢ. Đó là sự thật, nhưng ở phía đối diện! Vì vậy, nếu tôi sử dụng phương pháp này, tôi vẫn sẽ kết thúc với cả hai gây ra xoay vòng đồng hồ. Thấy tôi khó xử?
codemonkey

3 giải pháp khả thi. 1) Không sử dụng bình thường nhưng hướng của bên và trừ 90 độ như đã đề cập ở trên. 2) Mô phỏng tương tự bằng cách hoán đổi x và y của bình thường và đảo ngược (nhân với -1). 3) Nhân góc với dấu của tích chéo của hai vectơ khi sản phẩm chéo thể hiện tội lỗi của góc không đối xứng quanh 0 độ.
Kaj

Sản phẩm chấm không cung cấp cho bạn góc, chỉ có độ lớn của góc, bạn cũng cần hướng của góc. Tất cả 3 cách trên mô phỏng bằng cách sử dụng sin cho bạn một bên. Bạn cũng có thể sử dụng trig cơ bản để có được góc. Sin (alpha) = chiều dài cạnh đối diện / chiều dài cạnh dốc (dựa trên hình tam giác với một góc 90 độ giữa cạnh đối diện và cạnh dốc). Điều đó và pythagoras để tính toán độ dài các cạnh sẽ làm.
Kaj

Nhân tiện, đọc lại câu trả lời ban đầu của tôi, vì nó giải quyết vấn đề nan giải bằng cách lấy góc với mặt phẳng thay vì bình thường và trừ 90 độ.
Kaj

0

Điều đầu tiên bạn cần địa chỉ là tốc độ quay hoặc quay trước khi chạm tường; hãy nói Si; lớn hơn, bằng hoặc thấp hơn giá trị cần thiết để duy trì cùng một vòng quay sau khi nhấn, Ss nói. Với điều này, bạn có thể có được thực tế sau khi đánh spin, giả sử Se, sử dụng giá trị ma sát giữa quả bóng và bề mặt

Lấy thành phần vận tốc trên bề mặt nảy Vxi = Vi chấm Vx, là Vx một vectơ song song với bề mặt có cường độ 1.

Giá trị bạn đang tìm kiếm là Ss = Vxi / r, đây là để biến Vxi thành tốc độ góc. Nếu Si thấp hơn Ss, bóng sẽ đạt được độ xoáy dương. Nếu Si bằng Ss, quả bóng sẽ giữ nguyên độ xoáy tương tự, về điều này sau. Nếu Si lớn hơn Ss thì bóng sẽ mất spin

mất và tăng tốc độ phụ thuộc vào giá trị ma sát Fr. Trên thực tế, nó là một Chữ thập giữa bán kính và lực ma sát hte, nhưng bạn có thể đặt giá trị đó theo ý muốn.

Bạn cũng phải lưu ý rằng bên cạnh coef nảy, bóng mất một phần năng lượng do ma sát giữa bóng và bề mặt, do đó Vxi bị ảnh hưởng tiêu cực. Tôi sẽ nói rằng coef nảy ảnh hưởng đến Vy và ma sát ảnh hưởng đến Vx.

Bạn nên tính đến sự biến dạng của quả bóng. Điều này sẽ ảnh hưởng đến thời gian hoặc khung hình quả bóng dính vào tường, do đó lực ma sát sẽ tác động trong thời gian dài hơn ảnh hưởng đến tốc độ quay và thoát. Biến dạng này phụ thuộc vào cách bạn muốn mô hình của bạn được.

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.