Нуждаетесь в помощи с круговой коллизией и вращением? - Игровая Физика

Хорошо, таким образом, у меня есть набор шаров:

Ignight Balls


То, что я пытаюсь выяснить, - то, как сделать эти круги:

  • Вращайтесь на основе поверхностей, которых они касаются

  • Зафиксируйте проникновение коллизии при контакте с несколькими касающимися объектами.


Править: Это - то, что я имею в виду попеременно

alt text

  • Ball 0 будет вращаться против часовой стрелки, поскольку это облокачивается на Ball 3

  • Ball 5 будет вращаться по часовой стрелке, поскольку это полагается на Ball 0


Даже при том, что решения этого универсальны, только для справки я использую JavaScript и SVG, и предпочел бы реализовывать это сам вместо того, чтобы пользоваться библиотекой.

Справка очень ценилась бы.Спасибо!:)

15
задан Nas Banov 25 July 2010 в 04:03
поделиться

3 ответа

Вот несколько ссылок, я думаю, поможет вам по квест:

Box2D

Усовершенствованная физика персонажа

JavaScript Ball Simulation

Box2D имеет то, что вы ищете И его открытый источник я верю. Вы можете скачать файлы и посмотреть, как они делают то, что они делают, чтобы достичь вашего эффекта.

Дайте мне знать, если это поможет, пытаясь поправиться на ответах на вопросы здесь. :)

Редактировать:

Итак, я пошел дальше и подумал, что это немного больше, чтобы дать некоторое понимание, насколько я его подошел к нему. Посмотрите на изображение ниже:

в основном, сравните углы на сетке, если мяч падает +30 градусов по сравнению с мячом, он падает, то поверните мяч положительно. Если его падают -30 градусов по сравнению с мячом, он отрицательно поверните мяч. Я не говорю, что это правильное решение, но просто думая об этом, это так, как я бы подошел к проблеме от летучей мыши.

alt text

6
ответ дан 1 December 2019 в 04:27
поделиться

Я бы порекомендовал посмотреть книги и статьи по симуляции игровой физики. Смотрите, например, "Физика для разработчиков игр" O'Reilly's и сайт Gamasutra .

3
ответ дан 1 December 2019 в 04:27
поделиться

С физической точки зрения звучит так, как будто вы хотите сохранить как линейный, так и угловой импульс .

В качестве отправной точки вы хотите установить ODE матрицы, которые моделируют обе, а затем выполнить некоторую линейную алгебру для их решения. Лично я бы использовал Numpy/Scipy (вероятно, используя разреженный массив) для этого решения. Но подходов много (на ум приходит симпатия). Какие модули вы хотите использовать?

Вы захотите ознакомиться с коэффициентом реституции и коэффициентом трения и решить, хотите ли вы сохранить и кинетическую энергию. (Хотите ли вы/беспокоитесь, если они будут продолжать прыгать и катиться вечно?) (вероятно, вам понадобятся еще и энергетические матрицы)

Вы будете решать эти матрицы каждый раз, все время проверяя условие, что никакие два центра шара не находятся ближе суммы двух радиусов. (...и если они это сделают, то вы отрегулируете параметры импульса и энергии для условия после столкновения)

Это только начало большого проекта. Могу я спросить, почему вы хотите сделать это с нуля?

6
ответ дан 1 December 2019 в 04:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: