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

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

Ускорение ведущих колес

Заметьте, момент вращения, который мы можем видеть выше среди кривых моментов вращения для указанного количества оборотов в минуту, является максимальным моментом вращения. Какое значение момента вращения действительно действует на движение колёс зависит от конкретного положения дросселя. Это положение определяется вводом пользователя (нажатием на педаль газа) и варьируется в промежутке от 0 до 100 %. В псевдокоде это можно представить в таком виде:

max torque = LookupTorqueCurve( rpm )

engine torque = throttle position * max torque

Реализовать функцию LookupTorqueCurve(), мы можем используя массив пар момента вращения/обороты в минуту, и делая линейную интерполяцию между двумя ближайшими точками.

Этот момент вращения передается ведущему колесу через коробку передач, и результат я назову моментом вращения передачи:

drive_torque = engine_torque * gear_ratio * differential_ratio * transmission_efficiency

Или более кратко:

Tdrive = Tengine * xg * xd * n

так как  Fdrive = Tdrive / Rw, тоже самое, что и уравнение для силы двигателя, которое мы видели ранее.

Обратите внимание, что коробка передач увеличивает момент вращения, но уменьшает скорость вращения, особенно на низких передачах.

Как мы получаем количество оборотов в минуту?

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

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

rpm = wheel rotation rate * gear ratio * differential ratio * 60 / 2p

60 / 2p - коэффициент перехода от "радиан в секунду" к "оборотам в минуту". Согласно этому уравнению, коленчатый вал вращается быстрее, чем ведущие колеса. Например, скажем, колесо вращается со скоростью 17 рад/с.

Колесо вращается со скоростью 17 рад/с.

Коэффициент первой передачи - 2.66, разностный коэффициент - 3.42, так что коленчатый вал вращается со скоростью 153 рад/с. 153*60 = 9170 радиусов/минуту = 9170/2p = 1460 оборотов в минуту в двигателе.

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

если (оборотов в минуту <1000)

оборотов в минуту = 1000;

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

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

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

Например, автомобиль движется со скоростью 20 км/час = 20 000 м/3600 с = 5.6 м/с. радиус колеса - 0.33 м., так что, угловая скорость равна 5.6/0.33 = 17 рад/с.

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

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

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

23 мая 2003

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


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

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