我使用下面的代码得到了一个(参数化的)截断圆柱体:
\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}