I have modified the spring functions to oscillate in time, instead of manually adjusting the spring. The problem is that they do not compress and contract properly. Based on the oscillation functions defined, does anyone know how to use them so that the springs compress and contract along with the movement of the masses?
\[Theta]1[t_] =
1/72 (40 + E^(-I Sqrt[3/10] t) + E^(I Sqrt[3/10] t) +
3 E^(-((I t)/Sqrt[10])) + 3 E^((I t)/Sqrt[10])) \[Pi];
\[Theta]2[t_] =
1/72 (88 + E^(-I Sqrt[3/10] t) + E^(I Sqrt[3/10] t) -
3 E^(-((I t)/Sqrt[10])) - 3 E^((I t)/Sqrt[10])) \[Pi];
\[Theta]3[t_] =
1/36 (68 - E^(-I Sqrt[3/10] t) - E^(I Sqrt[3/10] t)) \[Pi];
Manipulate[
Show[
PolarPlot[
{
(1 + 0.2*
TriangleWave[(3*x)/
2*( \[Theta]2[time] - \[Theta]1[time] - \[Theta]3[time] ) ])
},
{x, \[Theta]2[time], \[Theta]1[time]},
AspectRatio -> Automatic,
Axes -> None,
PlotRange -> { -1.2*1, 1.2*1 },
PerformanceGoal -> "Quality",
ImageSize -> Medium
],
PolarPlot[
{
(1 + 0.2*
TriangleWave[(3*x)/
2*(\[Theta]2[time] - \[Theta]1[time] - \[Theta]3[time])])
},
{x, \[Theta]2[time], \[Theta]3[time]},
AspectRatio -> Automatic,
Axes -> None,
PlotRange -> { -1.2*1, 1.2*1 },
PerformanceGoal -> "Quality",
ImageSize -> Medium
],
PolarPlot[
{
(1 + 0.2*
TriangleWave[(3*x)/
2*(\[Theta]2[time] - \[Theta]1[time] - \[Theta]3[time] )])
},
{x, \[Theta]1[time], \[Theta]3[time] - 2 \[Pi]},
AspectRatio -> Automatic,
Axes -> None,
PlotRange -> { -1.2*1, 1.2*1 },
PerformanceGoal -> "Quality",
ImageSize -> Medium
],
Graphics[{
{(* Mass-1 *)
Directive[ RGBColor[0, 0, 1], Opacity[0.75] ],
Disk[
{
1*Cos[ \[Theta]1[time] ],
1*Sin[ \[Theta]1[time] ]
},
1/15
]
(* Mass-1 *)},
{(* Mass-2 *)
Directive[ RGBColor[0, 0, 1], Opacity[0.75] ],
Disk[
{
1*Cos[ \[Theta]2[time] ],
1*Sin[ \[Theta]2[time] ]
},
1/15
]
(* Mass-2 *)},
{(* Mass-3 *)
Directive[ RGBColor[0, 0, 1], Opacity[0.75] ],
Disk[
{
1*Cos[ \[Theta]3[time] ],
1*Sin[ \[Theta]3[time] ]
},
1/15
]
(* Mass-3 *)}
}]
],
{
{time, 1 E - 20},
1 E - 20,
120,
ControlType -> Trigger,
DefaultDuration -> 120.0,
DisplayAllSteps -> True,
AnimationRate -> 2.0
},
TrackedSymbols :> {time}
]