Як обчислити обертання, викликане тертям відскоку?


15

Випливаючи з мого попереднього запитання : у мене м'яч цілком реально відскакує від поверхонь, в які він потрапляє. Тепер я хотів би, щоб він крутився від тертя удару .

Показати це досить просто: я обертаю кулю на кутову швидкість кожною галочкою і застосовую те саме обертання, коли воно надається.

Коли куля потрапляє в стіну, я знаю, що на швидкість обертання впливає ...

  • початкова швидкість кулі при ударі по поверхні
  • то коефіцієнти тертя кулі і поверхневих (фізичних констант)
  • кут падіння (кут між вектором швидкості вхідного кулі і нормалі до поверхні).

Кут падіння апроксимується точковим добутком векторів удару та виходу кулі. (1 означає високий спін, -1 означає відсутність віджиму, а все інше відносно між ними)

Помноживши все вищезазначене разом і переконавшись, що вони потім перетворилися на діапазон 0 - 1 і помножили на максимальну швидкість обертання, м'яч, здавалося, відповідав швидкістю обертання, як очікувалося. За винятком однієї речі: вона завжди обертається за годинниковою формою (через позитивні значення).


Це хороший метод? Ви можете придумати простіший спосіб?

Якщо цей метод здається прекрасним, чого мені не вистачає? Як дізнатись, коли кулька повинна обертатися проти годинникової стрілки?

Відповіді:


2

Ваш метод приємний, тому що він дуже простий. Одне, що вам може знадобитися - це залежність від попереднього віджимання на кулі, яку ви не враховуєте. Обертовий кулька представляє обертальну енергію, тому реалістичне моделювання, ймовірно, повинно було б зберегти її разом з іншими енергіями.

Однак, якщо куля не обертається при ударі, я не можу уявити собі ситуацію, коли вона починає обертання проти напрямку кута падаючого. Тобто, "за годинниковою стрілкою" або "проти годинникової стрілки" має бути відносно тієї сторони від нормального, кут падаючого.

Я думаю, що просто помножити результат на оригінальний вектор x-напрямку (+1, якщо подорожувати зліва направо, -1, якщо рухатися праворуч ліворуч) повинен це зробити.

Редагувати: Ви можете використовувати для цього крос-продукт. Incident cross normalзабезпечує вектор лише у напрямку Z (якщо ми знаходимось у площині 2D xy). Подивіться на z-елемент: якщо він позитивний, підхід кулі повинен змусити його крутитися за годинниковою стрілкою. Якщо вона негативна, куля повинна крутитися проти годинникової стрілки.


Ей, Елі По-перше, я беру до уваги оригінальний віджимання кулі, просто забув згадати його у своєму посту. По-друге, я не думаю, що система x-направлення спрацює. Я спробував це, але якщо куля потрапить на поверхню знизу вліво, вектор x буде -1, це означатиме обертання проти годинникової стрілки, тоді як насправді він повинен обертатися за годинниковою стрілкою
codemonkey

Як ви враховуєте оригінальний віджимання кулі? Якщо він обертається дуже швидко, він може запуститись у зовсім іншому напрямку. Проблема з точковим продуктом у вашому випадку полягає в тому, що він використовує косинус (рівну функцію). Вам потрібно щось інше, щоб встановити знак взаємозв'язку між вашими векторами (інцидент і нормальність). Для цього можна використовувати перехресний продукт (векторний продукт). Я відредагував свою відповідь, щоб включити метод крос-продукту.
Елі

перечитати відповідь після редагування мені подобається. Спробував це, і це спрацювало цілком чудово. Щодо оригінального віджиму, я говорив лише про те, щоб змінити обертання поступово ... як для оригінального віджиму, що впливає на вихідний вектор, ну ось мій наступний крок :)
codemonkey

Так, редагування було одним із 3-х різних запропонованих нами рішень, і я пояснив, чому ви повинні це робити (крапка дає лише величину, а не напрямок кута). На жаль, я повинен бути більш лаконічним, я думаю.
Кай

Вибачте за цей кай, він мене підсунув ... без образи не мав на меті :)
codemonkey

3

Спочатку отримайте поверхневий дотичний від поверхні нормальний: t = (ny, -nx)

Тоді ви можете отримати компонент швидкості вздовж поверхні як vt = v точка t .

Тепер ви можете обчислити обертання кулі: w = | ( нормальний * r) поперечний vt |, де r - радіус кулі.

Тут я припускаю, що куля не має інерції обертання, і починає миттєво крутитися зі швидкістю, якби вона котилася по поверхні. Ви можете використовувати коефіцієнт тертя, щоб зробити його більш реалістичним і, якщо хочете, врахувати інерційність обертання кулі.


Дякую за відповідь Данік. Я вже беру до уваги інерцію обертання кулі (додаючи її до нового обертання), а також тертя поверхні як коефіцієнт, помножений на загальну швидкість обертання. Чим більше тертя, тим вище швидкість обертання, правда?
codemonkey

2

Гаразд, це може здатися нерозумним, але ви не використовуєте точковий добуток кульового вектора та поверхні нормально, а просто робите дуги для обчислення кута? Тому що тоді кут буде позитивним , чи було це позитивне (до 90 градусів) або негативного (так само) , як косинус симетричний навколо 0.
Якщо це є випадок , то замість того , щоб використовувати нормалі до площини, використовувати сам напрямок площині і відняти 90 градусів від кута, тож 0 до 180 стане від -90 до +90 градусів (або -половина PI до + половини PI, якщо ви радіально нахилені).


Ну, врахуйте цей випадок: x + ve має рацію, y + ive вниз; Поверхневий вектор S = (1,0); ми маємо два вектори швидкості удару V1 = (3,4), які вдаряються зверху, повинні обертати кулю за годинниковою стрілкою, а V2 = (3, -4), вдаряючи знизу, слід обертати кулю проти годинникової стрілки. Тепер нормальними для обох векторів будуть (3 / 5,4 / 5) & (3/5, -4 / 5) відповідно. Тепер крапковий продукт для обох векторів складе 3/5. кут, що генерується, був би дуги (3/5) = 53 градуси для ВОТНІХ векторів. Що правда, але з протилежних сторін! тому якщо я використовую цей метод, я все одно закінчуватимусь обома спричиненнями годинникового обертання. Бачите мою дилему?
codemonkey

3 можливі рішення. 1) Не використовуйте нормальний, а напрямок сторони і віднімайте 90 градусів, як було сказано вище. 2) Моделюйте те саме, поміняючи x і y нормального та інвертування (помножте на -1). 3) Помножте кут на знак поперечного добутку двох векторів, оскільки поперечний добуток представляє гріх кута, який не є симетричним навколо 0 градусів.
Кай

Точковий виріб не дає вам кута, лише величина кута, вам також потрібен напрямок кута. Всі три способи, описані вище, імітують за допомогою синуса, що надає вам сторону. Ви також можете використовувати основний триггер, щоб отримати кут. Sin (альфа) = довжина протилежної сторони / довжини похилої сторони (заснована на трикутнику з одним кутом 90 градусів між протилежною стороною та похилою стороною). Це і піфагор для обчислення довжини сторін зробить.
Кай

До речі, перечитайте мою оригінальну відповідь, оскільки це вирішує дилему, взявши кут із площиною замість нормальної та віднімаючи 90 градусів.
Кай

0

Перше, на що потрібно звернутися, - це швидкість обертання або обертання перед ударом об стіну; давайте скажемо Si; є більшим, рівним або нижчим за значення, необхідне для підтримання однакового віджиму після удару, скажімо, Ss. За допомогою цього ви можете отримати фактичне після удару віджимання, скажімо Se, використовуючи значення тертя між кулькою та поверхнею

Отримайте компонент швидкості по всій поверхні, що підстрибує Vxi = Vi, точка Vx, будучи Vx паралельним вектором до поверхні з величиною 1.

Значення, яке ви шукаєте, Ss = Vxi / r, це для перетворення Vxi в кутову швидкість. Якщо Si нижчий за Ss, м'яч повинен отримати позитивне віджимання. Якщо Si дорівнює Ss, куля повинна тримати приблизно однаковий віджимання, про це пізніше. Якщо Si більший за Ss, м'яч повинен втратити віджимання

втрати та посилення швидкості залежать від значення тертя Fr. Насправді це Хрест між радіусом і силою тертя hte, але ви можете встановити це значення, як хочете.

Ви також повинні помітити, що окрім кофе, який відбивається, м'яч втрачає деяку енергію через тертя між кулькою та поверхнею, таким чином, на Vxi впливає негативно. Я б сказав, що відмовний кофе впливає на Ви, а тертя впливає на Vx.

Слід враховувати деформацію кулі. Це вплине на час або рамки, коли кулька прилипає до стіни, таким чином, сила фрітації буде діяти довше, впливаючи на швидкість обертання та виходу. Ця деформація залежить від того, яким ви хочете бути вашою моделлю.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.