NextNext Page Arrow – Double Spring 2D

This simulation shows a two masses connected by springs and suspended from the ceiling. The masses are able to move in 2 dimensions, and gravity operates.
You can drag either mass with your mouse. You can also drag the top anchor point. Click the "reset" button to put the masses in a resting equilibrium. You can change parameters such as gravity, mass, spring stiffness, and friction (damping). If you don't see the simulation try instructions for enabling Java. Scroll down to see the math!


An immoveable (but draggable) anchor point has two spring2 and bobs hanging below and swinging in two dimensions. We regard the bobs as point masses. We label the upper spring and bob as number 1, the lower spring and bob as number 2.

2-dimensional double spring variables
double spring variables
Define the following variables: Define some constants: Note that for this simulation the vertical dimension increases downwards.

Here are the equations of motion. The derivation is similar to that given for the single 2D spring. F1x = m1 a1x = −k1 S1 sin θ1b1 v1x + k2 S2 sin θ2
F1y = m1 a1y = −k1 S1 cos θ1b1 v1y + k2 S2 cos θ2 + m1 g
F2x = m2 a2x = −k2 S2 sin θ2b2 v2x
F2y = m2 a2y = −k2 S2 cos θ2b2 v2y + m2 g
The spring stretch Sn and angles θn are functions of the positions un of the bobs as follows: L1 = √((u1xTx)2 + (u1yTy)2)
L2 = √((u2xu1x)2 + (u2yu1x)2)
S1 = L1R1
S2 = L2R2
cos θ1 = (u1yTy)/L1
sin θ1 = (u1xTx)/L1
cos θ2 = (u2yu1y)/L2
sin θ2 = (u2xu1x)/L2

Numerical Solution

To solve the equations of motion numerically, so that we can drive the simulation, we use the Runge-Kutta method for solving sets of ordinary differential equations. We need to convert the four second order equations of motion to eight first order equations. u1x' = v1x
u1y' = v1y
u2x' = v2x
u2y' = v2y
v1x' = −(k1/m1) S1 sin θ1 − (b1/m1) v1x + (k2/m1) S2 sin θ2
v1y' = −(k1/m1) S1 cos θ1 − (b1/m1) v1y + (k2/m1) S2 cos θ2 + g
v2x' = −(k2/m2) S2 sin θ2 − (b2/m2) v2x
v2y' = −(k2/m2) S2 cos θ2 − (b2/m2) v2y + g
We keep in mind that the spring stretch Sn and angles θn are functions of the position of the bob un as given previously.