🧪 Интерактивный Полигон
Кликните по пустому месту холста выбранным инструментом, чтобы создать объект, или перетаскивайте существующие тела мышкой.
Архитектура 2D физического движка
Внутри главного игрового цикла (Game Loop) каждый кадр физики строго разделен на три этапа:
- Интеграция сил: прикладываем гравитацию, сопротивление воздуха и импульсы управления к скоростям тел ($v += a \cdot dt$).
- Обнаружение столкновений (Detection): находим все пересекающиеся пары и строим список контактных манифолдов (нормаль, глубина).
- Решатель связей и контактов (Solver): за несколько итераций расталкиваем тела (депенетрация) и рассчитываем импульсы отскока с трением.
Чек-лист для собственной реализации:
- ✅ Используйте фиксированный шаг по времени (Fixed Timestep
dt = 1/60) с интерполяцией рендера, чтобы физика вела себя детерминированно независимо от FPS. - ✅ Для твердых тел (машин, ящиков, бильярда) выбирайте Semi-Implicit Euler + Impulse Resolution.
- ✅ Для мягких тел, волос, канатов, мостов и одежды выбирайте Verlet Integration + Distance Constraints.
- ✅ Для воды комбинируйте пружинную сетку высот для волн с силой Архимеда.