Pgfplots 3d 弧形箭头

Pgfplots 3d 弧形箭头

我使用下面的代码得到了一个(参数化的)截断圆柱体:

\documentclass[crop,tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis line style = {draw=none},ticks = none]
            \def\h{.2}
            \def\r{1}
            \def\R{2}

            %\def\ang{2}
            %\begin{scope}[rotate around x=pi/2,rotate around z=\ang]
                %\draw[->] (0:0) arc (0:10:1);
            %\end{scope}

            \addplot3 [surf,color=black,faceted color=black,opacity=.1,domain=0:2*pi,y domain=0:1,samples=50,samples y=15] ({((\r-\R)*y+\R)*cos(deg(x))},{((\r-\R)*y+\R)*sin(deg(x))},{y*\h});

        \end{axis}
\end{tikzpicture}
\end{document}

我希望在底部平面上添加一条(参数化)线、在圆柱体上添加一条线、在两条线之间添加一条圆弧,以及一个节点来标记圆柱体与水平面之间的角度,如下图红色所示:

在此处输入图片描述

参数是\ang平面围绕垂直轴的角度(在代码中和上图中的蓝色部分中),在该角度中绘制三角弧。当然角度$\theta$也是一个参数,它应该atan(\h/(\R-\r))位于我输入的代码中10,因为即使这样对我来说也不起作用。尝试使用注释掉的代码,但\draw[...] ... arc ...没有结果。

答案1

我终于成功了。但是如果你改变箭头(例如latex),它看起来就不对齐了,因为它仍然是二维的。

\documentclass[crop,tikz]{standalone}
\usepackage{pgfplots}%,tikz-3dplot}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{axis}[hide axis,axis equal]
    \def\h{2}
    \def\r{1}
    \def\R{2}

    \addplot3 [surf,color=black,faceted color=black,opacity=.1,data cs=polar,domain=0:360,y domain=\r:\R,samples=50,samples y=15,data cs=polar] {(1-(y-\r)/(\R-\r))*\h};

    \def\ang{-100}
    \def\f{.7}
    \def\ff{.3}
    \def\fff{.5}
    \def\ffff{.8}
    \draw[blue,thick] ({\ff*\R*cos(\ang)},{\ff*\R*sin(\ang)},0) -- ({\R*cos(\ang)},{\R*sin(\ang)},0) -- ({\f*\R*cos(\ang)},{\f*\R*sin(\ang)},{(1-(\f*\R-\r)/(\R-\r))*\h});

    \def\fr{.5*\R}
    \addplot3[thick,variable=t,samples y=0,blue,domain=0:{atan(\h/(\R-\r))}
    ,->] ({\R*cos(\ang)+(\fr*cos(t))*cos(\ang-180)},{\R*sin(\ang)+(\fr*cos(t))*sin(\ang-180)},{\fr*sin(t)}) node[xshift=.05cm,yshift=-.55cm]{$\theta$};

    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容