Cálculo de coordenadas 3D correctas en el entorno del eje

Cálculo de coordenadas 3D correctas en el entorno del eje

Dibujo un gráfico paramétrico usando pgfplotsy quiero agregar un punto específico en la curva. He usado addplot3+ coordinatespara agregar un marcador específico en la curva en coordenadas específicas. Este punto está bien posicionado (en rojo). Ahora quiero añadir un texto específico sobre este punto relacionado \coordinatecon el axismedio ambiente. He probado con coordenadas directas y axis csninguna funciona. Lo extraño adicional es que en la documentación de pgfplots está escrito (versión 1.16, sección 4.17.1) que axis cses el sistema de coordenadas predeterminado en axisel entorno y se puede omitir. Sin embargo, si lo quito axis csel punto no es lo mismo. Estoy seguro de que me falta algo :-).

MWE:

\documentclass{standalone}

\usepackage{pgfplots}

\begin{document}

%parameters
\pgfmathsetmacro{\vrotP}{pi/4}
\def\lengthb{4}
\def\lengthh{3}
\pgfmathsetmacro{\timeTot}{4*pi/\vrotP}
\pgfmathsetmacro{\timeMid}{\timeTot/2}
\pgfmathsetmacro{\timeRef}{7}

\begin{tikzpicture}[
    declare function={%
    theta(\t)=\vrotP*\t;
    px(\t)=\lengthb*cos(theta(\t));
    py(\t)=\lengthb*sin(theta(\t));
    pz(\t)=-\lengthh*theta(\t);
    }%
]
\begin{axis}[axis lines=center,
    axis on top,
    samples y=0,
    trig format plots=rad,
    xmax=5,
    xmin=-5,
    ymax=5,
    ymin=-5,
    zmin=-45,
    zmax=0,
    ]
    % \addplot[variable=t,domain=0:10,samples=50]{pz(t)};
    \addplot3[blue,line width=2pt,variable=t,domain=0:\timeTot,samples=100]({px(t)},{py(t)},{pz(t)});
    % point M
    \addplot3+[red,only marks,line width=2pt] coordinates{({px(\timeRef)},{py(\timeRef)},{pz(\timeRef)})};
    %
    \pgfmathsetmacro{\tmpX}{px(\timeRef)}
    \pgfmathsetmacro{\tmpY}{py(\timeRef)}
    \pgfmathsetmacro{\tmpZ}{pz(\timeRef)}
    \coordinate (orig) at (axis cs:0,0,0);
    \coordinate (M) at (axis cs:\tmpX,\tmpY,\tmpZ);
    \coordinate (Mp) at (\tmpX,\tmpY,\tmpZ);
    \draw(orig)--(M);
    \draw(orig)--(Mp);
    \node[anchor=south] at (orig) {$O$};
    \node[] at (M) {$M$};
\end{axis}
\end{tikzpicture}

\end{document}

Resultado:

resultado

información relacionada