The Set and Reset/ Reset Set

[Graphics:HTMLFiles/setresetset_1.gif]

This Notebook models the kinetic sculpture designed by Mike Myers for Set and Reset/ Reset at Ballet de l'Opéra de Lyon, May 2005

Sub-twisted State

The structure is in a "sub-twisted" state when the bottom has been rotated by less than 180ƒ from its equilibruim state.  In this state, the strings have not been twisted together.   Angular motion in the sub-twisted state is governed by the same differential equation as the simple pendulum,   θ'' (t) = -k sin(θ(t))  for some positive constant k.

Calculations

n = number of strings
f = radius of bottom circle   (we assume the top radius is one unit )
L = Length of strings.

We will need to select a number of strings soon, so here is our choice.

n = 24 ;

Height of the bottom ring

If a string is attached to the top ring at  (1, 0, 0) and the bottom attachment is rotated θƒ, its coordinates will be (f cos θ, f sin θ, H) for some H.  The distance between these two points is L. Therefore

L^2 (1 - f Cos[θ])^2 + (f Sin[θ])^2 + H^2

L^2H^2 + (1 - f cos(θ))^2 + f^2 sin^2(θ)

sol = Solve[L^2 (1 - f Cos[θ])^2 + (f Sin[θ])^2 + H^2, H]

{{H -(L^2 - (1 - f cos(θ))^2 - f^2 sin^2(θ))^(1/2)}, {H (L^2 - (1 - f cos(θ))^2 - f^2 sin^2(θ))^(1/2)}}

We assume that the top ring is in that plane z = 0 and centered at the origin,  so the first solution is the z-coordinate of the bottom connection.  We define h(θ) as the height of the bottom circle above the top circle as a function of the angle of rotation,  -180ƒ< θ<180ƒ.

h[θ_] := Evaluate[H/.First[sol]]

Simplify[h[θ]]

-(-f^2 + 2 cos(θ) f + L^2 - 1)^(1/2)

Derivation of the angular acceleration

Positions of the top attachments, which are fixed, are

tp = {Cos[#], Sin[#], 0} &/@Range[0, 2Pi, 2Pi/n] ;

Positions of the bottom attachements, which depend on θ, are

btm = {f Cos[# + θ], f Sin[# + θ], h[θ]} &/@Range[0, 2Pi, 2Pi/n] ;

The  vector to the top connection at (1, 0, 0) from its bottom connection  is

tension = First[{tp, btm}//Transpose]//(First[#] - Last[#]) &

{1 - f cos(θ), -f sin(θ), (L^2 - (1 - f cos(θ))^2 - f^2 sin^2(θ))^(1/2)}

The force on the connection at the bottom ring parallel to the xy-plane is tangent to the bottom ring at that point.  The angular acceleration that twists the ring back is proportional to this force.  The dot product of the tanent vector and the tension vector tells us the relative angular acceleration.

twist = tension . {-Sin[θ], Cos[θ], 0}//Simplify

-sin(θ)

Construction of the Movie

Here is the whole structure in the form of a list of graphics primitives.  A red point on the bottom ring has been added for perspective.

RowBox[{RowBox[{LTNS, =, RowBox[{{, RowBox[{RowBox[{RGBColor, [, RowBox[{0.501961, ,,  , 0, ,, ... e[tp], ,, RowBox[{PointSize, [, 0.04, ]}], ,, RGBColor[1, 0, 0], ,, Point[btm[[12]]]}], }}]}], ;}]

For example, here is the graphics primitive corresponding to the first string, connected to the point (1, 0, 0).

We can verify that the length of this connection is what is should be by computing the sum of squares of the coordinate differences.

LTNS[[2, 1, 1]]//(First[#] - Last[#]) &//(#^2) &//(Plus @@ #) &//Simplify

L^2

Now we specify values for the lower radius and string length.

f = 2 ;

L = 4 ;

Here is structure before rotation.

RowBox[{(, RowBox[{RowBox[{(LTNS/.{θ0}), //, RowBox[{RowBox[{Graphics3D, [, RowBo ... {{, RowBox[{1.368, ,,  , RowBox[{-, 3.093}], ,,  , 0.1}], }}]}]}], ]}], &}]}], //, Show}], )}]

[Graphics:HTMLFiles/setresetset_35.gif]

⁃Graphics3D⁃

Here is the structure when it has been rotated 90 degrees.

RowBox[{(, RowBox[{RowBox[{(LTNS/.{θPi/2}), //, RowBox[{RowBox[{Graphics3D, [, Ro ... , RowBox[{1.368, ,,  , RowBox[{-, 3.093}], ,,  , 0.109}], }}]}]}], ]}], &}]}], //, Show}], )}]

[Graphics:HTMLFiles/setresetset_38.gif]

⁃Graphics3D⁃

Static images like this can be strung together to create a movie.  To get the proper timing, use the fact that when the lower ring has been rotated by θ , angular acceleration is proporional to -sin θ.  The constant of proportionality depends on the mass of the ring.  We will assume that the mass is adjusted so that the constant of proportionality is 1.  The differential equation θ'' (t) = -sin(θ(t)) has not simple analytic solution.  

DSolve[{θ''[t]  -Sin[θ[t]]}, θ, t]

Solve :: ifun : Inverse functions are being used by  Solve, so some solutions may not be found; use Reduce for complete solution information.  More…

{{θFunction[{t}, 2 am(-1/2 ((-c_1 - 2) (-t^2 - 2 c_2 t - c_2^2))^(1/2) 4/ ... Function[{t}, 2 am(1/2 ((-c_1 - 2) (-t^2 - 2 c_2 t - c_2^2))^(1/2) 4/(c_1 + 2))]}}

The "am" function that is given here is a Jacobi Amplitude function.  A numeric solution can be computed if initial conditions are specified.   Here we start the structure at rest after it has been rotated to almost  π radians.  

RowBox[{RowBox[{nsol, =, RowBox[{NDSolve, [, RowBox[{RowBox[{{, RowBox[{θ''[t]  - ... 52;, ,, {t, 0, 50}}], ]}]}], ;}] ψ[t_] := θ[t]/.First[nsol] Plot[ψ[t], {t, 0, 50}]

[Graphics:HTMLFiles/setresetset_46.gif]

⁃Graphics⁃

Here is a plot of the height of the bottom ring with time.  Notice that at its low point it is jolted back up quickly.

Plot[h[ψ[t]], {t, 0, 50}]

[Graphics:HTMLFiles/setresetset_49.gif]

⁃Graphics⁃

We can identify the period length by finding the time at which the first maximum after the start has occured.  The starting point, 22, is identified by eye.

FindMaximum[ψ[t], {t, 22}]

FormBox[RowBox[{{, RowBox[{3.13001, ,, RowBox[{{, RowBox[{t, , 26.1474}], }}]}], }}], TraditionalForm]

We extract the period from this information.

period = (t/.(FindMaximum[ψ[t], {t, 22}]//Last))

FormBox[26.1474, TraditionalForm]

The expression in blue is a function that displays the structure for any specific rotational angle within a specified box and at a fixed viewpoint.   The magenta expression produces a list of angles based on the solution to the differential equation over one period of motion.  So the blue function mapped over the magenta list produces the movie.

RowBox[{RowBox[{movie, =, RowBox[{StyleBox[RowBox[{RowBox[{(, RowBox[{(LTNS/.{θ#} ... or -> RGBColor[0., 0., 1.]], /@, ((ψ[#]) &/@Range[period/50, period, period/50])}]}], ;}]

[Graphics:HTMLFiles/setresetset_106.gif]

Export["setreset.gif", movie, "GIF"]

setreset.gif

α[θ_] := ((f^2 + 1) - f^2 Cos[θ])^(1/2)

Damping in the untwisted state

Damping of the simple pendulum is accounted for with the extra term -λ θ ' (t) Ý added to the angular momentum, which retards the acceleration, particularly
for larger angles.  Here is a plot of the damped angle as a function of time.

RowBox[{RowBox[{λ, =, 0.08}], ;}] RowBox[{RowBox[{nsoldamp, =, RowBox[{NDSolve, [, RowBox ...  ,, {t, 0, 50}}], ]}]}], ;}] δ[t_] := θ[t]/.First[nsoldamp] Plot[δ[t], {t, 0, 50}]

[Graphics:HTMLFiles/setresetset_112.gif]

⁃Graphics⁃

Here is the corresponding height.

plt = Plot[h[δ[t]], {t, 0, 50}]

[Graphics:HTMLFiles/setresetset_115.gif]

⁃Graphics⁃

An finally, movies for two different damping constants.

RowBox[{RowBox[{(, RowBox[{RowBox[{RowBox[{(, RowBox[{(LTNS/.{θ#})//Graphics3D, / ... }], }}]}]}], ]}], &}]}], )}], &}], /@, ((δ[#]) &/@Range[0, 50, p/50])}], )}], ;}]

[Graphics:HTMLFiles/setresetset_214.gif] [Graphics:HTMLFiles/setresetset_214.gif]
Damping: 0.04
Damping: 0.08

Twisted state

How is the twisted state of the structure represented?  More on that later?


Created by Mathematica  (July 18, 2005)