
Animating a 3D Plot
Posted:
Nov 19, 2012 5:06 PM


Below I show three attempts to animate a 3 D Plot. 1. The Dynamic simplifies the plot while the animation is running spoiling the quality. 2. To avoid this I do a ListAnimate which works. 3. However, when I try to alter one of the parameters dynamically I am back to the problem of oversimplification of the plot. Any ideas to make this work? Thanks Hugh Goyder
Animate[ With[{sf = 0.3, n = 4}, ParametricPlot3D[ a = Cos[t] Cos[th] Sin[n 2 Pi x]; {x, Cos[th] + sf a Cos[th], Sin[th] + sf a Sin[th]}, {x, 0, 1}, {th, Pi, Pi}, PlotRange > {All, {2, 2}, {2, 2}}, BoxRatios > {10, 2, 2}, PlotPoints > 3, ImageSize > 10 72] ], {t, 0, 2 Pi}, DisplayAllSteps > True]
dd = Table[With[{sf = 0.3}, ParametricPlot3D[ a = Cos[t] Cos[th] Sin[Pi x]; {x, Cos[th] + sf a Cos[th], Sin[th] + sf a Sin[th]}, {x, 0, 4}, {th, Pi, Pi}, PlotRange > {All, {2, 2}, {2, 2}}, BoxRatios > {10, 2, 2}, ImageSize > 10 72, PlotPoints > 3] ], {t, 0, 2 Pi, Pi/16}]; ListAnimate[dd]
DynamicModule[{n = 5, dd, t = 1, sf = 0.3},
dd[n_] := Table[ ParametricPlot3D[ a = Cos[t] Cos[th] Sin[n 2 Pi x]; {x, Cos[th] + sf a Cos[th], Sin[th] + sf a Sin[th]}, {x, 0, 1}, {th, Pi, Pi}, PlotRange > {All, {2, 2}, {2, 2}}, BoxRatios > {10, 2, 2}, ImageSize > 10 72, PlotPoints > 5] , {t, 0., 2. Pi, Pi/16.}]; Column[{ Row[{"Number of longitudinal waves = ", Slider[Dynamic[n], {0, 10, 1}], Dynamic[n]}], Animator[Dynamic[t], {1, 33, 1}], Dynamic[dd[n][[t]]] }] ]

