Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Статьи / Физика автомобиля для игр. (7 стр)

Физика автомобиля для игр. (7 стр)

Поворот на больших скоростях

Конечно, не много таких игр, в которых машины управляются идеально (не считая легендарный Trabant Granny Racer ;-). Игроки - достаточно нетерпеливы и обычно хотят получить что-нибудь быстро, предпочитая услышать визг шин, растирания редукторов и нанести дополнительный ущерб окружающей среде. Наша задача найти физическую модель, которая могла бы предоставить недостаточную реакцию автомобиля на поворот руля, буксование, ручной тормоз и так далее.

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

Также, машина не всегда движется в том направлении, в которое она направлена. Машина, может быть направлена в  одну сторону, но двигается в другую. Например, водители ралли идут по кривой. Угол между ориентацией и вектором скорости машины  известен как угол бокового скольжения (beta).

Изображение

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

При повороте на больших скоростях, шины развивают боковое усилие, известное также как угловая сила. Эта сила зависит от угла скольжения (alpha), который есть угол между направлением шин и их направлением движения. С увеличением угла скольжения, растет и угловая сила. Угловая сила каждой шины также зависит от веса, действующего на нее. Так, при малом угле скольжения, отношение между углом скольжения и угловой скоростью линейны, другими словами:

Flateral = Ca * alpha

Где коэффициент Ca известен как константа неподвижности.

Угол вектора скорости колеса, альфа, зависит от направления в котором колесо может крутится. Мы должны разделить вектора скорости v на два вектора. Движение в этом направлении совпадает с круговым движением колеса. Продольный вектор получается умножением cos(alpha) * v. Боковой вектор имеет умножение sin(alpha) * v и является причиной возникновения силы сопротивления обратного направления, т.е. угловой скорости.

Изображение

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

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

Изображение

Если машина поворачивается вокруг центра геометрии (CG)  при частоте изменения угла omega (rad/s), это значит что передние колеса описывают круговой путь вокруг CG с той же частотой. Если машина описывает полною окружность, передние колеса описывает круговой путь длиной 2pb вокруг CG за 1/(2p*omega) секунды, где b - это расстояние между передней осью CG. Это значит, что боковая скорость равна omega*b. Для задних колес будет -omega*c. Отметьте изменение знака. Для того, чтобы выразить это как угол, возьмите арктангенс боковой составляющей скорости поделенный на продольную составляющую (точно также мы делали для беты). Для маленьких углов, мы можем аппроксимировать arctan(vy/vx) как vx/vy.

Изображение

Угол рулевого управления (дельта) - это угол поворота передних колес относительно ориентации машины. Данный угол будет всегда равен 0 для задних колес. Если машина движется назад, то эффект поворота угла рулевого управления будет противоположным.

Изображение

Угла скольжения для передних и задних колес принимаются равными:

Изображение

Боковая сила обеспечивается шинами и является функцией угла скольжения. В действительности, для реальных шин, достаточно комплексная функция, которую наиболее хорошо можно описать при помощи графика, подобного нижеследующему:

Изображение

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

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

Боковая сила не только зависит от угла скольжения, но от и нагрузки на шины. Этот график начерчен исходя из нагрузки в 5000 Н, т.е. веса в 500 кг приходящегося одну шину. Различные кривые применяют к разным нагрузкам, потому что вес меняет форму шины и следовательно ее свойства. Но форма кривой очень похожа, не считая увеличения, поэтому мы можем аппроксимировать и положить, что боковая сила будет линейной, и построим нормализованный график боковой силы полученный делением боковой силы на 5000 Н нагрузки.

Flateral = Fn, lat * Fz,
где Fn, lat это нормальная боковая сила, для получения угла скольжения и Fz - нагрузка на шину.

Для очень маленьких углов (ниже максимума) боковая сила может быть аппроксимирована линейной функцией:

Flateral = Ca * alpha

Если вы хотите лучшую аппроксимацию зависимости между углом скольжения и боковой силой,  ищите информацию по волшебной формуле Pacejka (Pacejka Magic Formula) , названная на честь профессора Pacejka, который разработал ее в Delft University. Эту формулу физики используют для моделирования поведения шин. Это система уравнений с множеством "магических" констант. Выбирая правильную константу эти значения обеспечивают отличную аппроксимацию кривых, полученных в результате тестирования шин. Проблема в том, что производители шин не разглашают эти значения, т.е. константы для реальных шин. С одной стороны, эта техника моделирования очень точна. С другой стороны, вы потратите много времени для нахождения верного значения для точного моделирования.

Боковая сила четырех шин имеет два результата: результирующую угловую силу и вращающий момент вокруг оси, направленной вверх. Для передних колес мы умножаем боковую силу на cos(delta), для учета угла рулевого управления.

Fcornering = Flat,rear + cos(delta) * Flat,front

Теперь, мы найдем центростремительную силу используя следующее выражение.

Fcentripetal = M v2 / radius

Боковая сила также вводит крутящий момент, который является причиной вращения автомобиля. В конце концов, это будет выглядеть очень глупо, если автомобиль описывает круг и направлен в том направлении.  Угловая сила заставляет CG описывать окружность, но пока она оперирует с точечной массой, она ничего не может сделать с ориентацией автомобиля. То что нам надо - это момент вращения вокруг вертикальной оси.

Момент вращения - это сила умноженная на перпендикуляр расстояния между точкой, где применяется сила и точкой опоры. Поэтому для задних колес момент вращения будет -
Flat, rear * c,
а для передних колес
cos(delta) * Flat, front * b.

Заметьте, что знак различный.

Применяя момент вращения к корпусу машины, возникает угловое ускорение.  Также как есть второй закон Ньютона: F=ma, есть закон для момента вращения и углового ускорения.

Torque = Inertia * angular acceleration.

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

Страницы: 13 4 5 6 7 8 Следующая »

23 мая 2003

#autosim, #автомобиль


Обновление: 4 июня 2010

2001—2018 © GameDev.ru — Разработка игр