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

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

Движение по кривой

Итак, хватит двигаться только по прямой. Как насчет поворотов?

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

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

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

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

Изображение

Радиус окружности может быть определен как показано ниже:

Изображение

Расстояние между передней и задней осью обозначено L. Радиус окружности, которую описывает автомобиль (точнее окружность, которую описывают передние колеса) обозначен R. На рисунке показан треугольник с вершинами в центре окружности и в центре каждого из колес. Угол с задним колесом составляет 90°. Угол между передним колесом составляет 90° - дельта. Это означает, что угол при центре окружности равен дельте (сумма углов треугольника всегда равна 180°). Данный угол мы можем рассчитать по формуле:

Изображение

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

Хорошо, мы можем получить радиус окружности из угла поворота, что теперь? Следующим шагом будет вычисление угловой скорости, т.е. скорости, с которой автомобиль поворачивает. Угловая скорость обычно обозначается греческой буквой омега (w) и измеряется в радианах в секунду. Ее очень просто определить: если мы движемся по окружности с постоянной скоростью v и радиусом окружности R, сколько времени займет полный оборот?

Изображение

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

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

23 мая 2003

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


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

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