🧶 Фізика мотузки і ланцюга
Мотузка як точкові частинки, поєднані дистанційними обмеженнями, інтегровані Верле та релаксацією Якобсена. Перетягуйте будь-який вузол, закріплюйте кінці, обмотуйте навколо стовпчика, будуйте смужку тканини.
Про цю симуляцію
Цей симулятор будує мотузку, ланцюг, міст, маятник або смужку тканини з точкових частинок, з'єднаних дистанційними обмеженнями, використовуючи інтегрування Штермера–Верле в позиційній формі: кожна частинка зберігає лише поточну й попередню позицію, тож швидкість є неявною (v ≈ x − xPrev) і ніколи не обчислюється напряму. На кожному кадрі гравітація та коефіцієнт демпфування зміщують кожну незакріплену частинку, а потім K разів виконується прохід релаксації Якобсена, який підтягує кожну пов'язану пару назад до її вихідної довжини на половину частки похибки довжини вздовж їхньої відстані. Закріплені частинки залишаються нерухомими, а необов'язковий круглий стовпчик застосовується так само — будь-яка частинка, що потрапила всередину його радіуса, повертається на край кола.
Що показано
Ланцюг частинок, показаний як сині стрижневі сегменти, що з'єднують невеликі кола; закріплені анкери намальовані оранжевим, вільні частинки — світло-сірим. Панель статистики показує вихідну довжину мотузки, її фактичну (розслаблену) довжину, відсоток розтягу між ними та найшвидшу частинку — живий показник того, наскільки близько розв'язувач обмежень до збіжності.
Як користуватися
Виберіть сценарій (батіг, міст, вільне падіння, маятник або смужка тканини), а потім перетягуйте повзунки сегментів, ітерацій, гравітації, демпфування та жорсткості, щоб змінити поведінку мотузки. Перетягуйте будь-який вузол напряму мишею або пальцем, позначте «Показати круглий стовпчик», щоб додати рухому перешкоду, і використовуйте «Пауза» / «Скинути», щоб заморозити або перебудувати сцену.
А чи знали ви?
Мотузка або ланцюг, що вільно висить під дією гравітації, набуває форми ланцюгової лінії (катеноїди), а не параболи — вони виглядають схоже, але математично різні. Архітектор Антоніо Гауді використав це, будуючи перевернуті моделі з підвішених ланцюгів для Sagrada Família, дозволяючи гравітації самій вирахувати форми арок, що працюють лише на стиск. Той самий трюк із частинками й обмеженнями, що використовується тут — динаміка на основі позицій — також керує тканиною, волоссям і фізикою «ганчіркової ляльки» в більшості сучасних ігрових рушіїв.
Поширені запитання
Який алгоритм використовує ця симуляція мотузки?
Вона використовує інтегрування Верле в поєднанні з релаксацією обмежень Якобсена — техніку, відому як динаміка на основі позицій (PBD). Кожна частинка зберігає лише свою позицію та попередню позицію; гравітація й демпфування напряму зміщують частинки на кожному кадрі, а потім окремий прохід релаксації повторно підтягує пов'язані частинки назад до їхньої вихідної відстані. Це дозволяє уникнути прямого розв'язання жорстких диференціальних рівнянь і є тим самим методом, який використовується для тканини, волосся й мотузок у багатьох іграх реального часу.
Чому симуляція не зберігає швидкість як окрему змінну?
Це форма інтегрування Штермера–Верле: швидкість є неявною, вона відновлюється як v ≈ x − xPrev, а не відстежується як окрема величина. Це чисельно стабільно і, що важливо, спрощує розв'язання обмежень, оскільки прохід релаксації Якобсена має лише напряму переміщувати позиції частинок; неявна швидкість для наступного кадру оновлюється автоматично з нової позиції та позиції, з якої частинка щойно прийшла.
Що саме контролює повзунок ітерацій (K) і чому його збільшення робить мотузку жорсткішою?
Кожна ітерація — це один прохід по всіх стрижневих обмеженнях мотузки, і один прохід лише частково виправляє похибку довжини кожної ланки. За малої кількості ітерацій мотузка поводиться як м'яка гумка, що помітно розтягується під навантаженням; за великої кількості ітерацій повторні виправлення наближаються до нерозтяжної мотузки, де кожен сегмент майже точно відповідає своїй вихідній довжині.
Чому мотузка розтягується й показує ненульовий відсоток розтягу в панелі статистики?
Релаксація Якобсена — це наближений ітеративний розв'язувач, а не точний. За скінченної кількості ітерацій K та одночасного впливу гравітації, сусідніх обмежень, закріплених точок і стовпчика мотузка рідко досягає стану з нульовою похибкою в межах одного кадру. Збільшення K зменшує розтяг ціною більших обчислень на кадр, тоді як зменшення гравітації, демпфування або впливу стовпчика має подібний ефект.
Як рухомий стовпчик взаємодіє з мотузкою і чи це справжня фізика зіткнень?
Стовпчик не використовує повноцінне зіткнення твердих тіл. Після кожної ітерації обмежень симуляція перевіряє, чи опинилася незакріплена частинка всередині кола стовпчика, і якщо так, напряму проєктує її назад на край кола. Повторення цього разом зі стрижневими обмеженнями K разів на кадр створює переконливе враження, що мотузка обгортається й ковзає навколо стовпчика, хоча насправді це лише позиційне обмеження, а не фізична реакція з імпульсами чи тертям.
Мотузка як точкові частинки, поєднані дистанційними обмеженнями, інтегровані Верле та релаксацією Якобсена. Перетягуйте будь-який вузол, закріплюйте кінці, обмотуйте навколо стовпчика, будуйте смужку тканини.
2D · HTML5 Canvas 2D · 60 FPS target · runs fully client-side, no install