Something like this happened when I was working with two Manipulate
cells. I saved the notebook, duplicated it and only keep these two cells, and opened the notebook with a fresh kernel, it still happened immediately (in trusted directory, if not, this happens after clicking enable dynamics).
I have repeated this on Mathematica 10.1 on OS X 10.10.3 and Windows 8.1 (I am not able to open it in version 9).
So is it a bug, or an expected behaviour I am unaware of?
The code in the notebook is here:
First Cell:
Manipulate[
circle = ParametricPlot3D[{Sin[x], Cos[x], 0}, {x, -Pi, Pi},
PerformanceGoal -> "Quality"];
circle1 = First[circle];
circlebase = Scale[circle1, {1, 1, 1}, {0, 0, 0}];
fin = Table[
Translate[Rotate[{Point[{-1, 0, 0}]}, - i 4 Pi/1000, {0, 0, 1}],
2 {Sin[i 2 Pi/1000], Cos[i 2 Pi/1000], 0}], {i, step}];
circlerolled =
Translate[circle1,
2 {Sin[ 2 Pi step/1000], Cos[ 2 Pi step/1000], 0}];
Graphics3D[{fin, circlebase, circlerolled},
PlotRange -> {{-3.1, 3.1}, {-3.1, 3.1}, {-0.1, 0.1}},
ViewPoint -> {0, 0, 1}, Boxed -> False],
{step, 1, 1000}]
Second Cell:
Manipulate[
circle = ParametricPlot3D[{Sin[x], Cos[x], 0}, {x, -Pi, Pi},
PerformanceGoal -> "Quality"];
circle1 = First[circle];
circlebase = Scale[circle1, {-3, -3, -3}, {0, 0, 0}];
fin = Table[
Translate[
Rotate[Point[{-1, 0, 0}], - i 2 Pi/(251/(-2)), {0, 0, 1}],
-2 {Sin[i 2 Pi/251], Cos[i 2 Pi/251], 0}], {i, step}];
circlerolled =
Translate[
circle1, (-3 + 1) {Sin[ 2 Pi step/251], Cos[ 2 Pi step/251], 0}];
Graphics3D[{fin, circlebase, circlerolled},
PlotRange -> {{-3, 3}, {-3, 3}, {-0.1, 0.1}},
ViewPoint -> {0, 0, 1}, Boxed -> False],
{step, 1, 251}]
The code itself should produce this after executing them separately.If you are not able to produce it, you may try to download my sample notebook.
https://drive.google.com/file/d/0B6gQp_HcIW0ZVmwyeUJHR0MtM0U/view?usp=sharing
I guarantee it is not malicious (anyway you can open it with a text editor and see the source code)
Answer
This infinite evaluation is the result of "cross-linking" the two Dynamic
expressions due to the failure to localize your Symbols with DynamicModule
, e.g.:
DynamicModule[{circle, circle1, circlebase, fin, circlerolled},
Manipulate[
circle = ParametricPlot3D[{Sin[x], Cos[x], 0}, {x, -Pi, Pi},
PerformanceGoal -> "Quality"];
circle1 = First[circle];
circlebase = Scale[circle1, {1, 1, 1}, {0, 0, 0}];
fin = Table[
Translate[Rotate[{Point[{-1, 0, 0}]}, -i 4 Pi/1000, {0, 0, 1}],
2 {Sin[i 2 Pi/1000], Cos[i 2 Pi/1000], 0}], {i, step}];
circlerolled = Translate[circle1, 2 {Sin[2 Pi step/1000], Cos[2 Pi step/1000], 0}];
Graphics3D[{fin, circlebase, circlerolled},
PlotRange -> {{-3.1, 3.1}, {-3.1, 3.1}, {-0.1, 0.1}}, ViewPoint -> {0, 0, 1},
Boxed -> False], {step, 1, 1000}
]
]
step
is automatically localized byManipulate
and does not need to be added to theDynamicModule
specification.This localization should be included for all
Manipulate
expressions unless you have specific need to access the values globally, and if you do you will need unique Symbol names.
Comments
Post a Comment