Привет
Тут еще есть читатели??
Я не могу понять одну вещь: трогание с места! На первой передаче сила большая, скорость маленькая, сопротивление тоже маленькое. В моем симуляторе получается что машина может разогнаться до очень высокой скорости!
Когда сила тяги и сила сопротивления равны (на последней передаче) - машина едет без ускорения, на максимальной скорости. На первой передаче (в пике момента), машина также едет без ускорения, но в этом случае сила тяги намного больше силы сопротивления. Кто же приводит машину в равновесие? Мне нужно найти какую нибудь силу, которая нейтрализовала бы остаточную силу тяги... Дайте совет, плиз...
Благодарю.
>>На первой передаче сила большая, скорость маленькая, сопротивление тоже маленькое. В моем симуляторе получается что машина может разогнаться до очень высокой скорости!
грубо говоря, чем ниже передача ( и выше передаточный коэффициент ), тем меньшая скорость вращения колен.вала передается на колеса и соответственно медленее едет авто, поэтому на низких передачах автомобиль не сможет быстро двигаться.
Hartmann
Может быть речь не о "двигаться", а об "ускоряться"?
DennMonn
> На первой передаче (в пике момента), машина также едет без ускорения, но в этом
> случае сила тяги намного больше силы сопротивления
Сила тяги равна (упрощенно) крутящему моменту на текущих оборотах умноженному на разность текущих оборотов и виртуальных (какие были бы при текущем положении педали газа, если бы колёса висели в воздухе) и делённому на виртуальные обороты и на коэффициент передачи КПП:
F = M * (vFrq - Frq) / (vFrq * KPP)
"в пике момента" vFrq = Frq, машина не ускоряется.
Спасибо за ответы.
Mikle - Ваша формула интересна, почему то я на нее до сих пор не наткнулся.
Хочу все таки рассказать более детально о своей проблеме.
Чтобы создать свою первую модель, я изучил статью http://www.gamedev.ru/code/articles/?id=4233 а так же сборник статей Брайна Бекмана "Физика Гонок".
Создал книгу в Екселе, там все расчеты. Сделал длинный список возможных скоростей, от 1 до 250 км/ч - и все силы соответствующие им + скорость вращения колеса и обороты двигателя. Вот мои Формулы
Я когда то неплохо знал физику и все описанное в данных статьях мне понятно. Тем более, что модель которую я пытаюсь создать - предельно простая: двигатель вкл/выкл, газ нажат/не нажат (2 состояния) ну и передачи. Автомобиль будет двигаться только прямолинейно, встречая на своем пути разные препятствия, которые периодично будут увеличивать силу сопротивления, вынуждая водителя переключиться на нижнюю передачу, потом, после преодоления препятствий - он сможет снова переключиться на передачу выше, чтобы двигаться с максимальной скоростью. Я знаю что по законам Ньютона, если тело движется с постоянной скоростью - все действующие на него силы - нейтрализованы. У меня сила тяги должна также должна быть скомпенсирована силами сопротивления. Но у меня не хватает этих сил на нижних передачах! Двигатель крутится с максимальной скоростью (заданной) а силы тяги еще остается чтобы ускоряться.
Mikle - по Вашей формуле может быть я бы получил другие значения для силы тяги... но я не знаю как ее использовать. Ведь у меня сила тяги рассчитывается вне зависимости от скорости авто, чтобы в итоге эту самую скорость вычислить. А по Вашей формуле, я уже откуда то должен знать скорость, чтобы использовать ее в расчетах силы.
Не хотели бы Вы рассказать мне более детально о Вашей формуле, откуда все там берется, чтобы в итоге получить цепочку расчетов, как моя:
1. Крутящий момент, передача и радиус колеса - определяют силу тяги.
2. Разность силы тяги и суммарной силы сопротивления + масса авто - определяют ускорение. Оно должно стать нулевой на каждой передаче, при достижении пика момента (тут мне не хватает силы сопротивления на нижних передачах).
3. Имея ускорение, вычисляем моментальную скорость и перемещение по отношению к предыдущему моменту времени.
4. Зная скорость, вычисляем скорость вращения колеса и обороты двигателя, которые не должны превышать установленное значение.
Или может я не с того конца начал эту цепочку??
Помогите разобраться!!!
Благодарю!
Давай на "ты", тут это принято.
DennMonn
> Или может я не с того конца начал эту цепочку??
Именно. Что по твоему произойдёт с двигателем, который вообще ни на что не нагружен, даже на КПП? Он будет бесконечно ускоряться, пока его не остановит трение? А если представить идеальный случай, когда трение нулевое? Двигатель просто выйдет на те обороты, когда давление расширяющегося газа в цилиндре, где в данный момент идёт сгорание, уравновешивает давление, необходимое в другом цилиндре для всоса. Для одноцилиндрового двигателя то же самое, только один такт мы тратим усилие на раскрутку маховика, другой такт маховик помогает всосать новую порцию смеси. Это то, что я назвал виртуальной скоростью вращения, когда давление газов в двигателе уравновешено. В этот момент двигатель не создаёт внешнего усилия, оно появится, когда какая-то внешняя сила будет пытаться изменить скорость вращения, не только тормозить но и ускорять, как происходит при торможении двигателем, ведь тормозит двигатель не за счёт трения, а именно за счёт давления газов. То есть усилие зависит от разницы между реальной и виртуальной скоростями вращения, я в формуле сделал эту зависимость прямо пропорциональной, на деле, конечно, куда сложнее, но для игры сойдёт.
Это я пишу не по конкретной этой статье, а просто свои соображения, статью я читал много лет назад и уже совсем забыл, просто я тоже "когда-то неплохо знал физику", даже на краевых олимпиадах призовые места получал :)
DennMonn
К этой цепочке надо добавить:
0. Зная скорость (обороты вала) на предыдущем моменте времени, находим крутящий момент.
Т. е. основная мысль, что для любого реального движка крутящий момент зависит от текущих оборотов. Именно поэтому нужны стартер (чтобы набрать начальные обороты и движок начал тянуть) и коробка передач (чтобы держать обороты движка в районе максимального крутящего момента).
Чтож, буду премного благодарен за подробное описание с формулами, исходя из:
N~Te = 50 Nm (мощность, условно равна крутящему моменту)
nmax = 3500 rpm (макс. обороты)
m=950 kg (масса авто)
g1=3 (первая передача)
g2=2.5 (вторая передача)
g3=2 (третья передача)
g4=1 (четвертая передача)
R = 3 (разностный коэффициент, или передаточное отношение главной пары, он умножается на g1-4)
Колесо - 155/60 R13
Максимальная скорость не должна превышать 100 км/ч.
V=0
V0=0
S=0
Машина стоит на холостом ходу, 1000 rpm. Водитель нажал на газ, как я сказал выше, у меня только 2 состояния, 1000 rpm и max: 3500 rpm, двигатель набрал 3500 rpm, водитель включил первую передачу...
Что далее? Формулы? Расчеты?
DennMonn
> Машина стоит на холостом ходу, 1000 rpm. Водитель нажал на газ, как я сказал
> выше, у меня только 2 состояния, 1000 rpm и max: 3500 rpm, двигатель набрал
> 3500 rpm, водитель включил первую передачу...
Задавать тут обороты не правильно. Есть два состояния, N=F1(rpm) и N=F2(rpm). Тут F1 и F2 -- две зависимости крутящего момента от оборотов. Можно найти их в виде таблиц для реальных двигателей, можно задать от балды, важно, чтобы эти зависимости падали до 0 при больших (и малых) оборотах. После этого, берем текущие обороты, по ним находим крутящий момент, вычитаем всякое трение и сопротивление, делим на эффективный момент инерции и получаем угловое ускорение вала. Берем это ускорение и обновляем обороты. Эффективный момент инерции считается через моменты всех вращающихся частей на валу с учетом передаточных коэффициентов, т. е. реально получается таблица моментов инерции J[n] для всех передач.
Хотя тут надо еще сцепление учитывать, если по честному. В идеале выписывать физсистему со связями и решать ее.
Таким образом, когда водитель нажимает на газ, то обороты сразу не меняются, а возрастает момент. Этот момент разгоняет вал до таких оборотов, когда, в силу убывания F2, крутящий момент сравнивается с моментом сил трения и разгон прекращается.
DennMonn
> Что далее? Формулы? Расчеты?
Либо машина глохнет, либо пробуксовка, для расчёта используют "круг трения". Кроме того, даже при условии ручной КПП, приходится вводить автоматическое сцепление.
DennMonn
> у меня только 2 состояния, 1000 rpm и max: 3500 rpm
Это неправильно, при вводе с дискретного устройства, ввод фильтруют.
}:+()___ [Smile]
> две зависимости крутящего момента от оборотов. Можно найти их в виде таблиц для
> реальных двигателей, можно задать от балды, важно, чтобы эти зависимости падали
> до 0 при больших (и малых) оборотах. После этого, берем текущие обороты, по ним
> находим крутящий момент, вычитаем всякое трение и сопротивление, делим на
> эффективный момент инерции и получаем угловое ускорение вала. Берем это
> ускорение и обновляем обороты. Эффективный момент инерции считается через
> моменты всех вращающихся частей на валу с учетом передаточных коэффициентов, т.
> е. реально получается таблица моментов инерции J[n] для всех передач.
Получается, что нужно создать таблицу зависимости крутящего момента от оборотов! Но эту зависимость нельзя описать ни линейной ни другой функцией! Как же тогда мне вычислить крутящий момент в любой момент времени (для любых оборотов), ведь не удобно создать такую длинную таблицу, чтобы хранить в ней все возможные значения той или иной величины! Я взял в качестве первого авто самый слабый вариант: 50/3500 (крутящий момент - 50 Н*м при 3500 об/мин). Получается что нужно создать таблицу с около 5500 значений (для всех возможных 5500 значений оборотов) и по ней находить крутящий момент по отношению к предыдущему моменту времени. Создавать такую таблицу для всех модификаций авто - не хочется! Может есть другой вариант?
П.С.
С НОВЫМ ГОДОМ ВСЕХ!
DennMonn
Достаточно таблицы на пару десятков значений, между ними просто интерполировать, при желании сплайном.
Я вообще то подумал сделать не кривые, а линейные зависимости, только их будет по крайней мере две - одна вверх, до пика, другая вниз, от пика.
Можно подогнать полином невысокой степени, примерно похожий на реальную таблицу. Для игры хватит.
Ага. Так и сделал, и в этом сильно помог Advanced Grapher!
На 8 странице недоступны ресурсы для скачивания.
Тема в архиве.