我想使用洋红色圆柱体蒲公英球但是我想产生圆柱体在正 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);
}
另外,注释掉上方圆圈的绘制。结果如下: