Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I'm a bit confused by the following code. I would think that the following would produce an animation of rotating 90-degrees around the x-, y-, and z-axes, but the first part of the animation looks like it rotates around the z-axis and not the x-axis. Any ideas?

\documentclass[xcolor=dvipsnames]{beamer}
\usepackage{tikz}
\usepackage[english]{babel}
\usepackage{animate}  % Animations
\usepackage{tikz-3dplot}

\usepgflibrary{arrows}
\usetikzlibrary{decorations.markings, arrows, decorations.pathmorphing,
   backgrounds, positioning, fit, shapes.geometric}

\def\drawaxes{
    \draw[thick,->] (0,0,0) -- (5,0,0) node[anchor=north east]{$x$};
    \draw[thick,->] (0,0,0) -- (0,5,0) node[anchor=north west]{$y$};
    \draw[thick,->] (0,0,0) -- (0,0,5) node[anchor=south]{$z$};
}

\begin{document}
\begin{frame}
  \begin{center}
    \begin{animateinline}[autoplay, controls, poster=first]{60}
      \multiframe{90}{iFrame=0+1}{
        \tdplotsetmaincoords{0}{0}
        \begin{tikzpicture}[tdplot_main_coords]
          \draw (-5cm, -3cm) rectangle (5cm, 3cm);

          \tdplotsetrotatedcoords{\iFrame}{0}{0}
          \begin{scope}[color=red,
                        tdplot_rotated_coords,
                        xshift=-3cm,scale=0.25]
            \drawaxes
          \end{scope}

          \tdplotsetrotatedcoords{0}{\iFrame}{0}
          \begin{scope}[color=red,tdplot_rotated_coords,scale=0.25]
            \drawaxes
          \end{scope}

          \tdplotsetrotatedcoords{0}{0}{\iFrame}
          \begin{scope}[color=red,
                        tdplot_rotated_coords,
                        xshift=3cm,scale=0.25]
            \drawaxes
          \end{scope}
        \end{tikzpicture}
      }
    \end{animateinline}
  \end{center}
\end{frame}
\end{document}
share|improve this question
    
I certainly I have not much experience with tikz but have you tried to add % at the end of \multiframe{90}{iFrame=0+1}{% .... because I think that something confuse the compiler –  karathan Apr 1 '13 at 20:39
    
Thanks for the suggestion, but the % didn't change anything. –  cjohnson Apr 1 '13 at 20:48
add comment

2 Answers 2

Here's a work-around in case anyone else runs into the same problem. Use \tdplotsetmaincoords{rotationX}{0}, plot the rotation, then switch back to \tdplotsetmaincoords{0}{0} to plot as normal. For example, in the code I posted above, replace

      \tdplotsetrotatedcoords{0}{\iFrame}{0}
      \begin{scope}[color=red,tdplot_rotated_coords,scale=0.25]
        \drawaxes
      \end{scope}

with

      \tdplotsetmaincoords{\iFrame}{0}
      \begin{scope}[color=red,tdplot_main_coords,scale=0.25]
        \drawaxes
      \end{scope}
      \tdplotsetmaincoords{0}{0}

It may not be the most elegant solution, but it seems to have done the trick for the animation I was trying to make.

share|improve this answer
    
be careful, not all of your rotations are in the positive way. tdplotsetrotatedcoords and tdplotmaincoords work in opposite ways. –  Vser Jul 18 '13 at 15:53
add comment

The problem you're are stating is because of the convention adopted by Jeff Hein in the tikz-3dplot.

As he explained, he chose the Euler z-y-z convention (I guess it's the most widely used convention in astrophysics).

Syntax: \tdplotsetrotatedcoords{α}{β }{γ }

Parameters: α The angle (in degrees) through which the rotated frame is rotated about the world z axis. β The angle (in degrees) through which the rotated frame is rotated about the world y axis. γ The angle (in degrees) through which the rotated frame is rotated about the world z axis.

You want to do rotations around z, y and x axis witch are usually called nautical angles (or Tait-Bryan, or Cardan, or zyx Euler angles...).

A good solution to changed the convension used is to redefine the rotation matrix used by \tdplotsetrotatedcoords as suggested in Navigation system coordinates in tikz-3dplot .

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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