
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}
]
]
stepis automatically localized byManipulateand does not need to be added to theDynamicModulespecification.This localization should be included for all
Manipulateexpressions unless you have specific need to access the values globally, and if you do you will need unique Symbol names.
Comments
Post a Comment