5
$\begingroup$

I have the following code:

g[
  t_, OptionsPattern[{ θ -> (0 &), u -> ({0, 0, 1} &), v -> ({0, 0, 0} &)}]
] := Graphics3D[{
   Arrow[{{0, 0, 0}, {5, 0, 0}}],  Arrow[{{0, 0, 0}, {0, 5, 0}}],
   Arrow[{{0, 0, 0}, {0, 0, 5}}],
   Translate[
    Rotate[{
      Cuboid[{-1, -1, -1}, {1, 1, 1}],Arrow[{{0, 0, 0}, {5, 0, 0}}],
      Arrow[{{0, 0, 0}, {0, 5, 0}}],Arrow[{{0, 0, 0}, {0, 0, 5}}]
      },
     OptionValue[θ][t], OptionValue[u][t]], OptionValue[v][t]]
   },
  Lighting -> {{"Ambient", White}},
  Boxed -> False,
  ViewPoint -> {2.82, 1.61, 1.20},
  PlotRange -> {{-5, 5}, {-5, 5}, {-2, 7}}
]

θf := Function[t, 0.5 Sin[t]];

uf := Function[t, {Sin[t], Cos[t]^2, Sin[t] Cos[t]}];

Animate[g[t, θ -> θf, u -> uf], {t, 0, 2 π}]

tt = Table[
   g[t, θ -> θf, u -> uf], {t, 0, 2 π, 2 π/100}
];

Export[NotebookDirectory[] <> "ms.gif", tt]

but the quality of the animated GIF obtained is poor. How can I improve it? This is an example of a frame of the image:

enter image description here

Moreover, when the Export run, it in some way invalidates the Animation frame. Why? I mean that the running animation becomes the source code as in the following image. I also noted that g comes back to color blue, as if it was undefined.

enter image description here

$\endgroup$
  • $\begingroup$ Thanks, please add your version and OS info. $\endgroup$ – Kuba Feb 25 '17 at 10:47
  • $\begingroup$ @Kuba: Mathematica Version Number 11.0.0.0, Platform: Mac OS X x86 (32-bit, 64-bit kernel). Operating system: OS X El Capitan 10.11.6. $\endgroup$ – enzotib Feb 25 '17 at 10:52
  • 1
    $\begingroup$ For the second part of the question: g turning blue again indicates a kernel crash. I don't see this problem. I suggest you upgrade to 11.0.1. It is almost always a good idea to upgrade to point releases. They fix bugs. $\endgroup$ – Szabolcs Feb 25 '17 at 12:12
  • $\begingroup$ @Szabolcs: thanks for the suggestion. $\endgroup$ – enzotib Feb 25 '17 at 14:51
5
$\begingroup$

Mathematica is not good at creating beautiful and small gifs. It won't reach the quality you can can with e.g. ImageMagick's convert. Therefore, I suggest you export your images as png

Table[Export[
  "~/tmp/imgs/" <> 
   ToString[PaddedForm[i, 3, NumberPadding -> {"0", "0"}]] <> ".png", 
  tt[[i]]], {i, Length[tt]}]

and then you call something along the lines

convert -delay 1x15 imgs/* +dither -layers optimize out.gif

in a terminal

enter image description here

I have to admit, that for this particular example, the gif created by Mathematica does look good as well. The file size, however, is larger by almost a factor of 2.

$\endgroup$
  • $\begingroup$ Thanks for the answer, I will try. $\endgroup$ – enzotib Feb 28 '17 at 20:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.