如何在 Tikz 中绘制非平面形状?

如何在 Tikz 中绘制非平面形状?

在 Tikz 中绘制类似内容的最简单方法是什么?

在此处输入图片描述

我认为通过控制可以实现,但效率不高,也不精确。有没有更合适的方法?

答案1

为了进行比较,这里有一个TikZ使用 的纯解决方案double

在此处输入图片描述

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[very thick]
\draw[double distance=3pt, looseness=3](-.5,.5)--(-1,1)to[out=135,in=45](1,1)--(-1,-1)to[out=225,in=-45](1,-1)--(.5,-.5)
    (-.75,-.75){[looseness=1]to[out=135,in=225](-.75,.75)};
\draw[double distance=3pt] (-.5,.5)--(.5,-.5); % overcross
\end{tikzpicture}

\end{document}

答案2

我知道这已经过时了,但这里有一个简单的方法元帖子以防万一对任何人有用。制作具有随机宽度的线条有点困难,但只需通过过度绘制路径交叉的部分即可轻松进行交叉。

在此处输入图片描述

这里我稍微作弊了,因为我知道路径必须在原点处相交。对于更通用的方法,您可以使用循环的intersectiontimessubpath部分来计算交点。

使用以下命令进行编译lualatex

\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
path foo, bar, baz; 
foo = (origin .. up {right} .. tension 3/2 .. down {right} .. cycle) xscaled 42 yscaled 18;
bar = point 1/4 of foo {direction 1/4 of foo rotated 90} .. point 13/8 of foo;
baz = bar & subpath (13/8, 37/8) of foo;

draw baz withpen pencircle scaled 3;
undraw baz withpen pencircle scaled 2;

interim linecap := butt;
draw   subpath (-1/8, 1/8) of foo withpen pencircle scaled 3;
interim linecap := rounded;
undraw subpath (-1/8, 1/8) of foo withpen pencircle scaled 2;

endfig;
\end{mplibcode}
\end{document}

相关内容