lit*_*dev 4 animation wolfram-mathematica
我有一个沿着轨迹移动的图形对象.如何让相机跟随物体?
Dr.*_*ius 12
让我们绘制一颗行星及其卫星,摄像机跟随月球从一个朝向地球的视野.例如:
a = {-3.5, 3.5};
Animate[
Show[
Graphics3D[
Sphere[3 {Cos@t, Sin@t, 0}, .5],
ViewPoint -> 3.5 {Cos@t, Sin@t, 0},
SphericalRegion -> True,
PlotRange -> {a, a, a}, Axes -> False, Boxed -> False],
myEarth],
{t, 0, 2 Pi}]
Run Code Online (Sandbox Code Playgroud)
myEarth是另一个3D图形(供参考).
静态垂直视图:
a = {-3.5, 3.5};
Animate[
Show[
Graphics3D[
Sphere[3 {Cos@t, Sin@t, 0}, .5],
ViewPoint -> 3.5 {0,0,1},
SphericalRegion -> True,
PlotRange -> {a, a, a}, Axes -> False, Boxed -> False],
myEarth],
{t, 0, 2 Pi}]
Run Code Online (Sandbox Code Playgroud)
诀窍是SphericalRegion - > True,没有它,图像透视图从一帧到另一帧"移动".
编辑
有两个静态对象:
由于问题是关于2D,这里是如何在2D图形中模拟相机.
首先,让我们得到stackoverflow favicon.ico:
so = First@Import["http://sstatic.net/stackoverflow/img/favicon.ico"]
Run Code Online (Sandbox Code Playgroud)
好吧把它放在一些重叠的圆圈之上,让"相机"按照周围的图标调整 PlotRange
Manipulate[Graphics[{
Table[Circle[{j, 0}, i], {i, 0, 1, .1}, {j, {-.5, .5}}],
Inset[so, pos, {0, 0}, .2]},
PlotRange -> {{-.5, .5}, {-.5, .5}} + pos],
{{pos, {0, 0}, ""}, {-1.4, -1}, {1.4, 1}, ControlPlacement -> Left}]
Run Code Online (Sandbox Code Playgroud)

为了展示它是如何工作的(将上述内容放入Mathematica中),我们需要对其进行动画处理.最初我选择了一个变步长随机游走,drunk = Accumulate[RandomReal[{-.1, .1}, {200, 2}]]但这是一个不可预测的!因此,我们将使图标遵循ABC徽标
drunk = Table[{1.5 Sin[t], Cos[3 t]}, {t, 0, 2 Pi, .1}];
Animate[Graphics[{
Table[Circle[{j, 0}, i], {i, 0, 1, .1}, {j, {-.5, .5}}],
Inset[so, drunk[[pos]], {0, 0}, .2]},
PlotRange -> {{-.5, .5}, {-.5, .5}} + drunk[[pos]]],
{pos, 1, Length[drunk], 1}]
Run Code Online (Sandbox Code Playgroud)
