我发现了这张 $K_5$ 的书籍嵌入的图片,我想知道是否可以使用 tikz 轻松地绘制这样的图片。
我可以将问题细分为一些较小的问题,但我无法找到针对这些问题的有用建议,但我确信这是我的错。
我想说,解决这个问题的最佳方法似乎是将任何书籍站点绘制在其自己的位置(都在同一个 xz 平面上),然后旋转 n 页中的第一页 $1/n2Pi$绕z轴,第二个$2/n2Pi$...等等。
我无法只旋转一个图形,而是旋转整个坐标系。也许有可能在一张图片中集成更多坐标系,但更好的方法是只旋转图形的一部分。
上图取自https://en.wikipedia.org/wiki/Book_embedding。
如果您有任何进一步的想法我将非常感激。
谨致问候,克莱门斯
答案1
欢迎来到 TeX.SE!!
这是一个解决方案。基本上,我使用 Ti钾Z 3d 库定义canvas
一个在 内垂直旋转的scope
。然后,在范围内绘制矩形和arcs
。当然我需要这样做三次,每个平面一次。最后要绘制的是节点(球),这样它们就不会干扰可见性。
像这样:
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{3d,perspective}
\tikzset
{
my rectangle/.style={dotted,fill=white,fill opacity=0.5},
my node/.style={circle,draw,shading=ball,ball color=yellow}
}
\begin{document}
\begin{tikzpicture}[isometric view,line cap=round,line join=round]
% coordinates
\foreach[count=\j]\i in {1,3,5,7,9}
\coordinate (\j) at (0,0,\i);
% blue plane
\begin{scope}[rotate around z=10,canvas is xz plane at y=0,blue]
\draw[my rectangle] (0,0) -| (5,10) -- (0,10);
\foreach\i in {2,3}
\draw[thick] (\i) arc (-90:90:5-\i);
\end{scope}
% green plane
\begin{scope}[rotate around z=135,canvas is xz plane at y=0,,green!50!black]
\draw[my rectangle] (0,0) -| (5,10) -- (0,10);
\foreach\i in {1,2,3,4}
\pgfmathsetmacro\j{\i+1}
\draw[thick] (\i) arc (-90:90:1);
\draw[thick] (1) arc (-90:90:4);
\draw[thick] (2) arc (-90:90:2);
\end{scope}
% red plane
\begin{scope}[rotate around z=255,canvas is xz plane at y=0,red]
\draw[my rectangle] (0,0) -| (5,10) -- (0,10);
\foreach\i in {2,3}
\draw[thick] (1) arc (-90:90:\i);
\end{scope}
% nodes / balls
\draw[dotted,thick] (0,0,-1) -- (0,0,11);
\foreach\i in {1,...,5}
\node[my node] at (\i) {};
\end{tikzpicture}
\end{document}