force_prior
template <class DynamicsIdentifier>
void BaseForcePrior<DynamicsIdentifier>::update(size_t index_i, Real dt)
{
force_prior_[index_i] += current_force_[index_i] - previous_force_[index_i];
previous_force_[index_i] = current_force_[index_i];
}这里看起来和force_prior_[index_i] = current_force_[index_i]效果是等价的。但其实作者这么写是有用意的。并不是只有BaseForcePrior<DynamicsIdentifier>的派生类能修改force_prior_,其他类也可能会修改force_prior_。比如tests\3d_examples\test_3d_taylor_bar\taylor_bar.h的DynamicContactForceWithWall就会在interaction中动态改变force_prior_。如果这里改为force_prior_[index_i] = current_force_[index_i]的话,那么DynamicContactForceWithWall对force_prior_的贡献就会被抹去了(除非把DynamicContactForceWithWall::interaction放后面执行)。
Last updated
Was this helpful?