如何在 3D 环境中绘制圆形倾斜的道路?

如何在 3D 环境中绘制圆形倾斜的道路?

我想要画一条类似下面的道路(但为了简单起见,请忽略草地、土壤和周围的风景),

在此处输入图片描述

来说明关于圆周运动的物理问题。由于其文档冗长,我还没有体验到它的威力pst-solides3d。我的尝试如下,但在 2D 中看起来不太好。

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-node}
\begin{document}
\begin{pspicture}[dimen=m](-5,0)(5,4)
    \pscustom[fillstyle=solid,fillcolor=gray]{\pspolygon(-5,0)(-5,1)(-1,0)\scale{-1 1}\pspolygon(-5,0)(-5,1)(-1,0)}
    \bgroup
        \psset{linecolor=lightgray}
        \psline(0,4)(0,3.5)
        \psline(0,3.25)
        \psellipticarc{->}(0,3.5)(1,.25){-90}{270}
    \egroup
    \pcline[linestyle=none](-5,1)(-1,0)\naput[nrot=:U,npos=.25,labelsep=-.5\pslinewidth]{\rput(.5,.5){\small car}\psframe(0,.25)(1,.75)\psline[linewidth=3pt](.25,0)(.25,.25)\psline[linewidth=3pt](.75,0)(.75,.25)}
\end{pspicture}
\end{document}

在此处输入图片描述

我想先画出完整的电路,然后移动视口,使其看起来像上面的第一张图。我相信你的回答会帮助我轻松学习剩下的内容。

答案1

好吧,这是一个开始。使用 Jeff Hein 的(非常出色)tikz-plot3d(由您的标签建议),我至少构建了赛道的外部和内部边界(洋红色)。您希望包含的所有其他元素以及视角都可以使用此包实现(我认为),并且可能会在包中提供很好的熟悉课程。

作为第一步,我建议尝试各种值\tdplotsetmaincoords{80}{110}并观察不同的视角......

\documentclass[border=12pt]{standalone}

\usepackage{tikz}
\usepackage{tikz-3dplot}

\begin{document}

\tdplotsetmaincoords{80}{110}
%
\pgfmathsetmacro{\rvec}{.8}
\pgfmathsetmacro{\thetavec}{30}
\pgfmathsetmacro{\phivec}{60}
%
\begin{tikzpicture}[scale=5,tdplot_main_coords]
    \coordinate (O) at (0,0,0);
    \draw[thick,->] (0,0,0) -- (1,0,0) node[anchor=north east]{$x$};
    \draw[thick,->] (0,0,0) -- (0,1,0) node[anchor=north west]{$y$};
    \draw[thick,->] (0,0,0) -- (0,0,1) node[anchor=south]{$z$};
    \tdplotsetcoord{P}{\rvec}{\thetavec}{\phivec}
    \draw[-stealth, color=red] (O) -- (P);
    \draw[dashed, color=red] (O) -- (Pxy);
    \draw[dashed, color=red] (P) -- (Pxy);
    \tdplotdrawarc{(O)}{0.2}{0}{\phivec}{anchor=north}{$\phi$}
    \tdplotsetthetaplanecoords{\phivec}
    \tdplotdrawarc[tdplot_rotated_coords]{(0,0,0)}{0.5}{0}%
        {\thetavec}{anchor=south west}{$\theta$}
    \draw[dashed,tdplot_rotated_coords] (\rvec,0,0) arc (0:90:\rvec);
    \draw[dashed] (\rvec,0,0) arc (0:90:\rvec);
    \draw[thick, color=magenta] (\rvec/2,0,0) arc (0:180:\rvec/2); % inner edge of racetrack
    \draw[thick, color=magenta] (\rvec,0,0.3) arc (0:180:\rvec); % outer edge of racetrack
\end{tikzpicture}
\end{document}

偏移同心曲线

相关内容