答案1
欢迎来到 TeX.SE!这个网站的目的是分享代码,而不是让别人画东西(我并不是说这就是你要问的)。所以我把你的帖子理解为一个问题:如何在 3D 中的不同位置重复绘制具有不同尺寸、方向和颜色的相同物体。
- 对于重复的对象,一种方法是定义插入适当路径的样式。下面的答案针对水平板(
hplate
)、垂直板(vplate
)、圆柱体和圆柱顶部提出了此类样式的建议。 tikz-3dplot
允许人们获得三维空间的正交投影。然而,Ti钾Z 没有 3D 引擎,所以必须按照适当的顺序绘制这些对象。
使用这些工具,这是针对左图的建议,右图和注释留作练习。(我真的不喜欢从屏幕截图中输入文本,尤其是如果我的语言不流利,那么我必须逐字记住一些单词。)
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{70}{50}
\pgfmathsetmacro{\RadiusPlate}{3}
\pgfmathsetmacro{\RadiusCylinder}{2}
\begin{tikzpicture}[tdplot_main_coords,hplate/.style n args={4}{%
insert path={ % #1=angle, #2=radius, #3=width/2, #4=z
({#3*sin(#1)},{-#3*cos(#1)},#4) --
({#2*cos(#1)+#3*sin(#1)},{#2*sin(#1)-#3*cos(#1)},#4) --
({#2*cos(#1)-#3*sin(#1)},{#2*sin(#1)+#3*cos(#1)},#4) --
({-#3*sin(#1)},{#3*cos(#1)},#4) -- cycle}},
vplate/.style n args={5}{%
insert path={% % #1=angle, #2=radius, #3=width/2, #4=z_bottom, #5=z_top
({#2*cos(#1)+#3*sin(#1)},{#2*sin(#1)-#3*cos(#1)},#4) --
({#2*cos(#1)+#3*sin(#1)},{#2*sin(#1)-#3*cos(#1)},#5) --
({#2*cos(#1)-#3*sin(#1)},{#2*sin(#1)+#3*cos(#1)},#5) --
({#2*cos(#1)-#3*sin(#1)},{#2*sin(#1)+#3*cos(#1)},#4) -- cycle
}},
cylinder body/.style n args={3}{insert path={ % #1=radius, #2=z_bottom, #3=z_top
plot[samples=51,variable=\x,domain=\tdplotmainphi:\tdplotmainphi-180,smooth]
({#1*cos(\x)},{#1*sin(\x)},#2)
-- plot[samples=51,variable=\x,domain=\tdplotmainphi-180:\tdplotmainphi,smooth]
({#1*cos(\x)},{#1*sin(\x)},#3)
-- cycle
}},
cylinder top/.style n args={2}{insert path={ % #1=radius, #2=z
plot[samples=51,variable=\x,domain=\tdplotmainphi:\tdplotmainphi+360,smooth]
({#1*cos(\x)},{#1*sin(\x)},#2)
}}]
\foreach \Z in {0,-90}
{\draw[fill=cyan,hplate={\Z}{3.2}{0.2}{-0.1}];}
\foreach \Z in {0,0.4,...,2}
{\draw[thick,fill=orange,cylinder top={\RadiusPlate}{\Z}]; }
\foreach \Z in {20,-70,-160,-220,-280}
{\draw[fill=cyan,hplate={\Z}{3.2}{0.3}{2.1}];}
\foreach \Z in {-220,-280}
{\draw[fill=cyan,vplate={\Z}{3.2}{0.3}{2.1}{4.5}];}
\draw[fill=cyan,cylinder top={0.5}{2.1}];
\draw[thick,fill=purple!80,cylinder body={\RadiusCylinder}{3}{4}];
\draw[thick,fill=purple!60,cylinder top={\RadiusCylinder}{4}];
\foreach \Z in {20,-70,-160}
{\draw[fill=cyan,vplate={\Z}{3.2}{0.3}{2.1}{4.5}];}
\foreach \Z in {0,-90}
{\draw[fill=cyan,vplate={\Z}{3.2}{0.2}{-0.1}{2.5}];}
\draw[thick,fill=cyan!40,cylinder body={0.25*\RadiusCylinder}{4}{5.5}];
\draw[thick,fill=cyan!40,cylinder body={0.5*\RadiusCylinder}{5.5}{6}];
\draw[thick,fill=cyan!20,cylinder top={0.5*\RadiusCylinder}{6}];
\end{tikzpicture}
\end{document}
有时,当人们回答完这些问题后,他们会得到一些非常有用的评论,比如这个。对于任何想朝这个方向发表评论的人:你真的认为我们应该在这个网站上如此相待吗?