在 Mathematica 中为 Graphics3D 保持一致的绘图区域
Maintain consistent plot region for Graphics3D in mathematica
我正在尝试结合使用 Animate
和 Graphics3D
来制作具有振荡长度的向量列表。基本上,从原点开始绘制随机 3D 矢量列表。然后用具有随机相位的余弦函数控制向量的长度。
例如,
randomVec[r_] := r*Normalize@RandomVariate[NormalDistribution[], 3]
vecs = Table[randomVec[i], {i, 10^2}];
hues = Table[RandomReal[], {i, 10^2}];
rans = Table[RandomReal[], {i, 10^2}];
Animate[
Graphics3D[
Table[{Hue[hues[[i]]],
Arrow[Tube[{{0, 0, 0},
vecs[[i]] + Cos[\[Eta] + rans[[i]]*Pi]*vecs[[i]]},
Scaled[0.007]]]}, {i, 10^2}],
Boxed -> False, AxesOrigin -> {0, 0, 0},
ViewPoint -> {Pi, Pi, Pi}],
{\[Eta], 0, 2*Pi}]
但是,当我 运行 这段代码时,动画的原点似乎在视图框架内反弹。我如何强制 Graphics3D
在 Animate
中每次调用时都使用完全相同的查看框?
此外,此代码可能效率低下,因此我们将不胜感激有关如何使其动画更流畅的任何提示!
我认为在你的情况下首先要尝试的是添加一个
PlotRange->{{xmin, xmax},{ymin, ymax},{zmin, zmax}}
选项。
它将独立于计算的大小来控制立方体的大小
数据.
您可能还想查看选项 BoxRatios
和 SphericalRegion
以更好地缩放结果。
我正在尝试结合使用 Animate
和 Graphics3D
来制作具有振荡长度的向量列表。基本上,从原点开始绘制随机 3D 矢量列表。然后用具有随机相位的余弦函数控制向量的长度。
例如,
randomVec[r_] := r*Normalize@RandomVariate[NormalDistribution[], 3]
vecs = Table[randomVec[i], {i, 10^2}];
hues = Table[RandomReal[], {i, 10^2}];
rans = Table[RandomReal[], {i, 10^2}];
Animate[
Graphics3D[
Table[{Hue[hues[[i]]],
Arrow[Tube[{{0, 0, 0},
vecs[[i]] + Cos[\[Eta] + rans[[i]]*Pi]*vecs[[i]]},
Scaled[0.007]]]}, {i, 10^2}],
Boxed -> False, AxesOrigin -> {0, 0, 0},
ViewPoint -> {Pi, Pi, Pi}],
{\[Eta], 0, 2*Pi}]
但是,当我 运行 这段代码时,动画的原点似乎在视图框架内反弹。我如何强制 Graphics3D
在 Animate
中每次调用时都使用完全相同的查看框?
此外,此代码可能效率低下,因此我们将不胜感激有关如何使其动画更流畅的任何提示!
我认为在你的情况下首先要尝试的是添加一个
PlotRange->{{xmin, xmax},{ymin, ymax},{zmin, zmax}}
选项。
它将独立于计算的大小来控制立方体的大小 数据.
您可能还想查看选项 BoxRatios
和 SphericalRegion
以更好地缩放结果。