2015-01-08 6 views
0

Я хочу создать физический движок в Java. Однако это не тот код, о котором я беспокоюсь. Это просто математика физики твердого тела, в частности силы и то, как они влияют на вращение объекта.Ротация физических тел тела

Скажем, например, что у меня есть квадрат с одинаковыми сторонами длины. Квадрат будет ускоряться к уровню земли из-за силы тяжести (без сопротивления воздуха). Это означало бы, что в каждой точке квадрата будет векторная сила (0, -9,8) м/с.

Теперь предположим, что этот квадрат слегка повернут. Когда этот вращающийся квадрат вступает в контакт с землей (плоская поверхность), в точке контакта будет вектор скорости импульса (скорее всего это угол квадрата). Однако что происходит с силами других углов на площади? Как они влияют на первоначальную силу тяжести?

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

+0

Динамика динамического тела действительно сложна, особенно когда вы начинаете рассматривать суставы и контакты. Если у вас есть _no idea_, как продолжить, то спрашивать в [SO] это не очень хорошая идея. Субъект слишком широк и более подходит для [Physics.SE]. BTW У вас есть книги по этому вопросу, или вы нашли какие-либо онлайн-ресурсы? – ja72

ответ

1
  1. вращение форма кинетической энергии

    первая аналогия с движением

    • alpha - угловое положение [рад]
    • omega - угловая скорость [рад/с]
    • epsilon - угловое ускорение [рад/с^2]
    • alpha(t)/(dt^2)=omega(t)/dt=epsilon(t)

    теперь инерция

    • I - квадратичный вращение инерции масс [кг.м^2]
    • m - масса [кг]
    • M - крутящий момент [Нм]

    и некоторые уравнения для эксплуатации

    1. M=epsilon*I - крутящий момент, необходимый для достижения ускорения или наоборот [Нм]
    2. acc=epsilon*radius - периметр ускорения [м/с^2]
    3. vel=omega*radius - периметр скорость [м/с^2]

    уравнение №1 можно использовать для непосредственного вычисления силы. Уравнения № 2, № 3 могут использоваться для расчета сил трения, таких как захват/перетаскивание колес. Не забывайте о кинетической энергии Ek=0.5*m*vel^2+0.5*I*omega^2, чтобы вы могли использовать закон сохранения энергии.

  2. При непрерывном контакте object1 с object2 при вращении происходит это

    Периметр скорость/ускорение создания силы взаимодействия, это замедляет вращение object2 создания силы сопротивления на object2 и силы реакции на object1 ,

    если object1 не фиксирован, то эта сила также создает вращающий момент и поворачивает object1

    Если вращение вынуждено остановить внезапно, то все вращательная часть кинетической энергии перемещается импульс реакции сил столкновения.

    Если объект находится в более сложном движении вращения, вы должны вычислить фактическую ось вращения и alpha,omega,epsilon и использовать это, потому что объект может вращаться с большим числом оборотов, каждый с различным центром вращения.

    Также, если объект вращается, а другое вращение применяется на другой оси, то это создает гироскопический крутящий момент, создавая также поворот на третьей оси, перпендикулярной обоим.

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

+0

Итак, теперь я понимаю, насколько сложно это получить. Мне нужно будет провести некоторое исследование динамики твердого тела. Большое спасибо:) –

0

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

+0

Я понимаю о временных методах и о том, как они работают. Если мой алгоритм обнаружения столкновений обнаруживает столкновение, он возвращается к моменту удара, выполняя простые математические вычисления и перестраивая уравнения. Затем я знаю каждую деталь каждого объекта в программе во время удара. –

0

Если я правильно понимаю, вы беспокоитесь о разных углах площади - один с ударом, три без.

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

Углы вершин находятся в постоянном положении и вращаются относительно центра масс - это только положение и вращение твердого тела, которые одновременно изменяют положение всех четырех углов в мире. Преимущество этой точки зрения заключается в том, что она не зависит от геометрии - вы можете иметь 10 или 20 углов, и подход будет таким же.

Что касается вычисления вращения: Гравитация работает по-прежнему. Однако у вас теперь есть другая сила (от импульса за время ее действия) - и вы должны добавить эффекты этих двух, чтобы получить полный результат системы.

Импульс будет вызван одним из углов, возникающих при столкновении, в случае, когда вы описываете. Его нужно вычислить в точке контакта с нормальным контактом - в этом случае нормаль плоской поверхности.

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

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

Как и другие упоминали, читая на физике (динамика твердого тела) и физическое моделирование могут стать хорошей отправной точкой для лучшего понимания концепций.