Как стать автором
Обновить

Комментарии 8

А можно ссылку на вашу формулировку закона Амонтона-Кулона

Посмотрел — как и предполагал — в ссылке на википедию имеется ввиду соединение двух понятий — трение покоя и трение скольжения. Для первого имеет место неравенство, то есть при приложении силы в неподвижному телу оно будет оставаться в покое, пока приложенная сила не превысит некоторое значение, равному коэффициент трения покоя на силу нормальной реакции, другими слова сила трения покоя уравновешивает приложенную силу и тело остается в покое (движения нет). При движении имеет уже место равенство — сила трения равна произведению коэффициента трения скольжения на силу нормальной реакции.
То есть неравенство следует использовать для определения того, что в результате столкновения тело останется в прежнем положении (сила трения покоя уравновесит внешнюю силу) или же начнет двигаться (когда внешняя сила больше произведения коэффициента трения на силу нормальной реакции).
В случае движения сила трения точно равна произведению коэффициента трения скольжения на силу нормальной реакции.
К слову, все это имеет отношения к сухому трению — для жидкостей данная модель не подходит.
Так что модель движения в данном движке некорректна

В последнем разделе есть одна проблема: будет возвращаться множество дубликатов пар!

А ведь не лучше сделать так?:
  for(i = bodies.begin( ); i != bodies.end( ); i = i->next)
  {
    for(j = i->next; j != bodies.end( ); j = j->next)
    {
      ...
    }
   }
Когда дизайнеру нужно, чтобы форма была более «массивной» или «тяжёлой», то ему стоит изменять плотность формы.

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

обычно стараются вообще уйти от O(n^2). для этого например сортируют проекции по осям, и затем проверяют коллизии. Это позволяет значительно уменьшить количество проверок.
Ну и большая проблема импульсной физики — быстро движущиеся объекты. Их приходится обновлять с меньшей дельтой времени, иначе коллизии могут быть пропущены.

> Заметьте, что я всего лишь преобразовал порядок двух строк кода — см. вышеупомянутую статью Ханну.

Я построил графики от фпс и если переставить строки, то проблема инвертируется. То есть при низком фпс скорость будет возрастать быстрее, чем надо. И только если точно следовать методу Ханну (два раза по половинке) то все нормально.

скорость.Y += timeStep * g;
PointF смещение = Умножить(скорость, timeStep);

image

PointF смещение = Умножить(скорость, timeStep);
скорость.Y += timeStep * g;

image

скорость.Y += timeStep * g * 0.5f;
PointF смещение = Умножить(скорость, timeStep);
скорость.Y += timeStep * g * 0.5f;

image
Вы хотя бы сами сходили по своей же ссылке в вики и прочитали про второй закон Ньютона… Он как раз формулируется, как «ускорение прямо пропорционально силе и ...», а уже чему сила равна легко получается из него.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации