I am working on a physics simulator of rigid bodies. I am currently struggling with calculating friction of a rigid body with multiple friction points. The simulator is 2 dimensional and from top down view.

The things that I know:

  • Current speed
  • Force applied to the center of mass
  • Current rotational speed
  • Rotational force applied
  • mass of the body
  • rotational inertia of the body

I would like to know the formulas to calculate the speed and rotational speed affected by the frictional forces.

For example if I have a chair with four legs with different friction coefficients.For simplifications I assume the center of mass is located in the center. Then how would I calculate the speed and rotational speed.

An example situation would be:

  • mass(M) = 5 kg
  • force(F) = 1 N
  • current speed(v) = 2 m/s
  • rotational inertia(I) = 3 kg/m2
  • current rotational speed (ω) = 4 rad/s
  • friction (μ1) = 0.8
  • friction (μ2) = 0.5
  • friction (μ3) = 0.3
  • friction (μ4) = 0.1
  • size of chair = 1*1 m

So what would be the acceleration or the speed and rotational speed of the body?

enter image description here


2 Answers 2


Take the solution given in Estimate the reaction force on each leg of a 4-legged table to get the reaction (normal) forces for each leg $N_i$.

This involves finding the infinitesimal tilt angles $\psi$ and $\varphi$ by solving a 2×2 system

$$ \begin{equation} \begin{bmatrix} \sum_{i=1}^n(x_i-x_w)(y_i-y_w)&\sum_{i=1}^n(y_i-y_w)^2\\ \sum_{i=1}^n(x_i-x_w)^2& \sum_{i=1}^n(y_i-y_w)(x_i-x_w) \end{bmatrix} \begin{bmatrix} \psi\\\varphi \end{bmatrix}= \begin{bmatrix} -\frac{nW}{k}\\ \frac{nW}{k} \end{bmatrix} \tag{5} \end{equation}$$

and then estimating the interference $z_i$ and normal force $N_i$

$$z_i = z_w + \psi (x_i - x_w) - \varphi (y_i - y_w)$$

$$ N_i = -k (z_w + \psi (x_i - x_w) - \varphi (y_i - y_w)) $$

Then estimate sliding friction at each leg as $F_i = \mu_i N_i$.

If the sliding velocity at each leg is the vector $\mathbf{v}_i = \pmatrix{\dot{x}_i \\ \dot{y}_i}$ then friction acts to oppose this motion. The (in-plane) friction vector is then:

$$ \mathbf{F}_i =\frac{1}{\| \mathbf{v}_i \|} \pmatrix{ -\mu_i N_i \dot{x}_i \\ -\mu_i N_i \dot{y}_i }$$


That is not doable in a reasonable fashion using rigid body mechanics, because you will have to assume a certain distribution of normal loads on each contact point and this is an underdefined problem. Only when considering flexibility of bodies you can reasonably distribute the loads on the contact points.

So what people do is come up with various (half baked) contact models with springs and interpenetration to try to distribute the reaction forces along all the contact points. The problem with this is that what people put in for stiffness is so many orders of magnitude off from real life that it skews the results and produces numerical artifacts. In real life, the springs are non-linear (as contact areas vary) and they must include the stiffness of the object overall.

Try to slide a solid aluminum block over a surface, and compare that to a aluminum thin sheet construction and you will notice a significant difference.

PS. You question is not answerable unless you describe in detail what your current contact model is.

PS2. If you really need to know of a way to handle contacts with friction in a simplistic way read the following papers:

Edit 1

After the comments I understand the problem to be 2D and the question asked essentially similar to Estimate the reaction force on each leg of a 4-legged table and Forces exerted on legs of a 3-legged table

Once the normal forces $N$ on each leg is estimated, sliding friction is simply found by $F = mu N$ where $\mu$ is the coefficient of friction for each leg.

  • $\begingroup$ If I understood your answer correctly then what you meant was that not accounting for the stiffness of a body will increase the error in load distribution calculations. My final goal is to make general assumptions so I assume that I can disregard some aspects of the body and replace them with assumptions (such as the body not bending). You said that my problem can't be solved due to the lack of details about my current contact model. As most of this is still quite new to me (this is my first simulator) could you elaborate about what is a contact model and what kind of details are necessary? $\endgroup$ Oct 29, 2017 at 17:01
  • $\begingroup$ The ultimate goal of a contact model is to find the forces and impulses needed in order for two objects not to interfere with each other. In your simulation, who do you keep the chair from falling through the floor? Have you constrained the legs (and their contact points) or implicitly said the _y_axis of the object center doesn't change? $\endgroup$ Oct 29, 2017 at 19:05
  • $\begingroup$ I understand that I have made a mistake when writing the example. I seem to have forgotten to add that I am currently working on a simple 2 dimensional simulator from the top down view. And I assume the ground is a smooth plane perpendicular to the body and doesn't deform in any way. $\endgroup$ Oct 29, 2017 at 19:55
  • $\begingroup$ Again to solve your problem you need a) location of center of mass and b) if any external forces applied their locations, including their height above the horizontal plane. Then you can estimate the weight shift and estimate normal forces and friction. $\endgroup$ Oct 29, 2017 at 20:33
  • $\begingroup$ I edited the answer to include links to other questions in Physics of similar nature. $\endgroup$ Oct 29, 2017 at 20:41

Not the answer you're looking for? Browse other questions tagged or ask your own question.