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

Soft constraint

#0
(Правка: 15:20) 15:20, 23 июня 2022

Жесткие ограничения по статье Suslik'а сделал, рейкаст машинку с исползьзованием сил тоже сделал. Хочется теперь попробовать сделать подвеску машины с помощью мягких ограничений.
В инетах есть статья Erin Catto о soft constraint и даже перевод её на русский https://gamedev.ru/code/articles/?id=5541, но больше на математическом, чем на программистском, так что многое не понял.
Нашел код от Dirk Gregorius как рассчитать коэффициенты для мягких ограничений:

inline void rnBuildSoftConstraintCoefficients( float& Bias, float& Epsilon, float ConstraintError, float Mass, float Frequency, float DampingRatio, float Timestep )
{
  float Omega = RN_2PI * Frequency;
  float Ks = Mass * Omega * Omega;
  float Kd = 2.0f * Mass * DampingRatio * Omega;

  Epsilon = 1.0f / ( Ks * Timestep + Kd ) / Timestep; // Epsilon = gamma/h
  Bias = Epsilon * Ks * Timestep * ConstraintError;  // Bias = beta/h *  C
}

Задается частота, например 10, и коэффициент демпфера, например 1 и по ним высчитываются коэффициенты, а вот как их применить к Suslik'овской

lambda = –a / b

?
И сразу уточнить - a - это проекция относительной скорости на нормаль, а b - это эффективная масса из статьи Catto?

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