TikZ:无限高度的圆柱体

TikZ:无限高度的圆柱体

我想使用洋红色圆柱体蒲公英球但是我想产生圆柱体在正 z 方向上趋向无穷大的错觉。

我忽略了其余的代码,因为它们没有必要。

我怎么会产生这样的错觉呢?

在我看来,仅仅移除顶部的圆圈是行不通的。

当我展示一个延伸到无穷远的平面时,我让它看起来像

在此处输入图片描述

所以边缘是均匀的。

在此处输入图片描述

答案1

选项1
正如评论中所讨论的。在圆柱体的上边缘应用正弦形状。这在工程中的管道和轴的绘图中很常见,请参阅美国专利 6338336

我通过以下修改实现了该解决方案示例代码

\def\amp{0.25} % amplitude of sine wave
\def\phase{-90} % phase shift (rotates sine wave around the cylinder)
\foreach \t in {20,40,...,360}% generatrices
  \draw[magenta,dashed] ({cos(\t)},{sin(\t)},0)
    --({cos(\t)},{sin(\t)},{2.0*\h+\amp*sin(2*\t+\phase)});
  \draw[magenta,very thick] (1,0,0) % lower circle --- unchanged
    \foreach \t in {5,10,...,360}
  {--({cos(\t)},{sin(\t)},0)}--cycle;
  \draw[magenta,very thick] (1,0,{2*\h+\amp*sin(\phase)}) % upper circle
    \foreach \t in {10,20,...,360}
      {--({cos(\t)},{sin(\t)},{2*\h+\amp*sin(2*\t+\phase})}--cycle;

这将绘制正弦形状的上部圆。您可以根据自己的喜好调整振幅和相移。

结果:

在此处输入图片描述

选项 2
我想到的另一种方法是淡化垂直虚线。这也可以与选项 1 一起使用,但这里单独展示了这个方法。

我无法让淡入淡出方法正确处理虚线,而且该fadings库似乎无法很好地处理 3D 坐标。因此,我已将“通用线”magenta!50从设置z=0为,并在 之后z=2*\h进行过渡。magenta!0

相关代码:

\foreach \t in {20,40,...,360}{% generatrices
  \draw[magenta!50] ({cos(\t)},{sin(\t)},0)
    --({cos(\t)},{sin(\t)},{2.0*\h}) coordinate (temp);
  \foreach \i in {50,49,...,0}
    \draw[magenta!\i] (temp) -- ++(0,0,0.02) coordinate (temp);
}

另外,注释掉上方圆圈的绘制。结果如下:

在此处输入图片描述

相关内容