ПрограммированиеФорумФизика

Пишем симулятор гонок (комментарии) (12 стр)

Страницы: 19 10 11 12 13 14 Следующая »
#165
9:29, 10 авг 2012

anz
Да. Я плохо посмотрел, думал тут модуль суммы векторов, а не флоатов:
> float all = ::fabs( friction_x + friction_z );

#166
10:04, 10 авг 2012

Mikle
> Суммируешь вектора продольной и поперечной сил, если модуль полученной величины
> превышает силу трения - нормализуешь полученный вектор до величины силы трения
> и раскладываешь обратно, получаешь реально действующие продольную и поперечную
> силы с учётом трения.
Именно так.
Кстати в реальных условиях часто бывает, что окружность трения является эллипсом. Но это уже чрезмерное уточнение))

#167
18:22, 11 авг 2012

Тааак уже лучше)

#168
6:01, 12 авг 2012

Нашел подобный код в буллете

И вот чего не пойму, зачем они гасят fwdFactor ?

      

btScalar sideFactor = btScalar(1.);
btScalar fwdFactor = 0.5;

m_wheelInfo[wheel].m_skidInfo= btScalar(1.);

btScalar maximp = wheelInfo.m_wheelsSuspensionForce * timeStep * wheelInfo.m_frictionSlip;

btScalar maximpSquared = maximp * maximp;

m_forwardImpulse[wheel] = rollingFriction;

btScalar x = (m_forwardImpulse[wheel] ) * fwdFactor;
btScalar y = (m_sideImpulse[wheel] ) * sideFactor;

btScalar impulseSquared = (x*x + y*y);

if (impulseSquared > maximpSquared)
{
  sliding = true;

  btScalar factor = maximp / btSqrt(impulseSquared);

  m_wheelInfo[wheel].m_skidInfo *= factor;
}

       
#169
10:24, 12 авг 2012

FDsagizi
> И вот чего не пойму, зачем они гасят fwdFactor ?
Это собственно то, о чём я написал выше - не окружность а эллипс.

Кстати, код в плане логики вполне образцовый.

#170
7:29, 18 авг 2012

Rotation += Torque / Inerita;
где Torque — приложенный крутящий момент, Inertia — инерция колеса.

Inertia = ?

#171
10:09, 18 авг 2012

Считать по формуле цилиндра, первую важность имеет относительное значение.

#172
18:09, 18 авг 2012

Alexander K
> Считать по формуле цилиндра, первую важность имеет относительное значение.

Я так понял это: инерция цилиндра = Масса * радиус2 / 2

Супер но как учитывать сопротивление вращению для колеса от земли ?

Возможно этот вопрос решал "сам" физ движек который вы использовали

Но т.к. я использую RayCast колеса, сопротивление от земли нужно расчитывать самому

Ато выходит что колеса это кусок железа в вакууме :)

Добавил позже: Хотя у меня есть предположение что Maсса = масса колеса + масса машина на данное колесо ?

#173
10:09, 24 авг 2012

RPM += torq / Inertia - pow(1.0f - torq, 2) * BackTorque;
где pow() — функция возведения в степень, backTorq — константа, определяющая величину обратного момента.


Откуда брать - backTorq ?

#174
15:54, 1 сен 2012

Ништяк)))

Прошло более 8 месяцев
#175
5:28, 30 апр 2013
 float additionRPM = torq / Inertia - pow(1.0f - torq, 2) * BackTorque;

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

#176
11:22, 30 апр 2013
float additionRPM = torq / Inertia - pow(1.0f - Throttle, 2) * BackTorque;

Опечатка :D

#177
20:32, 16 мая 2013

Буду третьим, кто задает вопрос, на который пока что нет ответа: Как правильно подобрать значение BackTorque?

#178
23:47, 16 мая 2013

:) Я сам так и не попробывал, но подозреваю что это момент который передается от коробки с колесами обратно двигателю, типа инерции. Хотя могу ошибатся.

#179
11:00, 17 мая 2013

> Как правильно подобрать значение BackTorque?
BackTorque это константа, и при этом это не крутящий момент вовсе, как можно подумать из названия. Это к слову.

Как можно догадаться, величина этого значения обуславливает скорость падения оборотов двигателя при закрытой дроссельной заслонке.
Если копнуть глубже, то следовало бы ввести значение именно крутящего момента, который тормозил бы вращение двигателя. И наверняка он бы также зависел от самих оборотов. Но ведь это не такой уж важный, даже с точки зрения реализма, момент и можно ведь не усложнять, правда? :D

Я сейчас не могу сказать какие значения этой константы я использовал сам, но подобрать его совсем не сложно:
Пусть обороты падают на 3000 каждую секунду при отпущенном газе (закрытом дросселе). Стало быть BackTorque должно равняться 3000 * dTime, где dTime ваш шаг по времени.

Страницы: 19 10 11 12 13 14 Следующая »
ПрограммированиеФорумФизика

Тема в архиве.