Aquesta simulació mostra una sola massa sobre un moll que està connectat al sostre. La massa és capaç de moure's en 2 dimensions, i la gravetat opera. El moviment sembla aleatori? que opina? Mire el gràfic per un moment i veurà que en realitat és un patró intricat.
Pot canviar la gravetat, la massa, la rigidesa del ressort i la fricció (amortiment). Es pot arrossegar la massa amb el ratolí per a canviar la posició inicial.
The math behind the simulation is shown below. Also available are:
open source code,
documentation and a
simple-compiled version
which is more customizable.
Physics of the 2-Dimensional Spring
2D spring variables
An immoveable (but draggable) anchor point has a spring and bob hanging below and
swinging in two dimensions. Regard the bob as a point mass. Define the following
variables:
-
θ =
angle (
0 =
vertical, increases counter-clockwise)
-
S =
spring stretch (displacement from rest length)
-
L =
length of spring
-
u =
position of bob
-
v = u'=
velocity of bob
-
a = u''=
acceleration of bob
Define some constants:
-
R =
rest length of spring
-
T =
position of anchor point
-
m =
mass of bob
-
k =
spring constant
-
b =
damping constant
-
g =
gravitational constant

I & J unit vectors
Note that for this simulation the vertical dimension increases downwards. We'll need
the standard unit vectors
i, j
. We use bold and overline to indicate a
vector.
-
i =
unit vector in horizontal direction
-
j =
unit vector in vertical (down) direction
There are three vector forces acting on the bob:
-
Fgravity = m g j =
gravity acting straight down
-
Fspring = −k S (sin θ i + cos θ j) =
the spring pulling (or pushing) along the line from bob to anchor point.
-
Fdamping = −b (vx i + vy j) =
damping (friction) acting opposite to the direction of motion of the bob, ie. opposite to its velocity vector.
Summing these forces and using Newton's second law we get:
m a = Fgravity + Fspring + Fdamping
m (ax i + ay j) = m g j −
k S (sin θ i + cos θ j) −
b (vx i + vy j)
We can write the horizontal and vertical components of the above as separate
equations. This gives us two simultaneous equations. We also divide each side by
m
.
ax = − k⁄m S sin θ − b⁄m vx
| (1a) |
ay = g − k⁄m S cos θ − b⁄m vy
| (1b) |
These are the equations of motion. It only remains to show how
S sin θ
and
S cos θ
are functions of the position of the bob. The displacement of the
spring
S
is the current length of the spring minus the rest length.
From the pythagorean theorem we can get the length of the spring
L
in terms
of from the position of the bob,
u
, and the position of the anchor point,
T
.
$$L = \sqrt{(u_x - T_x)^2 + (u_y - T_y)^2} \tag{3}$$
The sine and cosine of the angle
θ
are:
Numerical Solution of the 2-Dimensional Spring
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. Since the Runge-Kutta method only
works with first-order
differential equations, we convert the two second-order equations (1) to the following
four first-order equations.
ux' = vx
uy' = vy
vx' = − k⁄m S sin θ − b⁄m vx
vy' = g − k⁄m S cos θ − b⁄m vy
Keep in mind that
S sin θ
and
S cos θ
are functions of the
position of the bob,
ux, uy
, as given in equations (2-4).
This web page was first published April 2001.