如何绘制弯曲的长方体?

如何绘制弯曲的长方体?

抱歉让你厌烦了。读了一些之后答案在 TEX stack exchange 中,绘制一个规则的长方体没有问题。但是,我想知道是否有人知道如何绘制一个弯曲的“长方体”,如下图所示(红色窗口中)。 在此处输入图片描述 非常感谢您观看。

答案1

TikZ 支持笛卡尔坐标系(手册中的示例为圆柱坐标系)的 3D 坐标,并允许相对轻松地创建自己的坐标系。在此问题,实现了球面坐标系,包括展示绘制线条和(伪)3D 效果的方法。如果您打算绘制图片,请考虑一个合适的坐标系,将其投影到 2D 画布上(目前在手册中找不到命令,但可以),然后开始绘制。对于自由形式,最好将一系列坐标解析为操作plot(可以从文件中读取)。如果您可以通过数学函数描述您的点,请考虑使用操作绘制它们foreach,为它们提供节点名称,然后使用line to操作连接节点。

总的来说,在 svg 编辑器(如 inkscape)中解析图像并将 svg 导入 tikz 可能更好/更容易。(Inkscape 还提供有限的 LaTeX 数学支持及其适当的缩放。)

但是,既然您已经准备好了图像,为什么不直接使用它呢?将其他程序中的图片放入文章、书籍和其他文档中是一种公认​​的做法。无需花费 6 小时以上在 TeX 中绘制坐标或在编辑器中重新绘制图像。(里程可能会有所不同)

答案2

绘制这种东西相当简单,但您必须按照正确的顺序绘制其他特征,或者切换到渐近线。

\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz-3dplot}

\begin{document}

\tdplotsetmaincoords{70}{50}
\begin{tikzpicture}[tdplot_main_coords,font=\sffamily]
% Uncomment these lines if you want to know where x, y and z point to
% \draw[-latex] (-7.5,0,0) -- (7.5,0,0)  node[above right]  {$x$};
% \draw[-latex] (0,-7.5,0) -- (0,7.5,0)  node[below] {$y$};
% \draw[-latex] (0,0,-7.5) -- (0,0,7.5)  node[above left]  {$z$};
\tdplotsetrotatedcoords{90}{90}{90}
\begin{scope}[tdplot_rotated_coords]
% Uncomment these lines if you want to know where x', y' and z' point to
% \draw[-latex,blue] (-7.5,0,0) -- (7.5,0,0)  node[above right]  {$x'$};
% \draw[-latex,blue] (0,-7.5,0) -- (0,7.5,0)  node[below] {$y'$};
% \draw[-latex,blue] (0,0,-7.5) -- (0,0,7.5)  node[above left]  {$z'$};
\draw[thick,fill=gray!10] plot[variable=\x,domain={-6:6},samples=120] 
({\x},{4+0.25*\x-0.6*exp(\x-6)},-1) --
plot[variable=\x,domain={6:-6},samples=120] 
({\x},{4+0.25*\x-0.6*exp(\x-6)},1) -- cycle;
\draw[thick,fill=gray!30] (-6,2.5,-1) -- (-6,2.5,1) -- (-5.5,0.5,1) 
--(-5.5,0.5,-1) -- cycle;
\draw[thick,fill=gray!20] plot[variable=\x,domain={-6:6},samples=120] 
({\x},{4+0.25*\x-0.6*exp(\x-6)},-1) --
 plot[variable=\x,domain={6:-6},samples=120] 
({(5.5/6)*\x},{2+0.25*\x-0.6*exp((5.5/6)*\x-6)},-1) -- cycle;
\end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容