帮助绘制四面体/截角八面体的图表(tikz)

帮助绘制四面体/截角八面体的图表(tikz)

有什么简单的方法可以重现该图表?

我可以使用 tikzpicture 进行暴力破解

\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1] 
\draw   (315.8,328.9) -- (268.85,410.22) -- (174.95,410.22) -- (128,328.9) -- (174.95,247.58) -- (268.85,247.58) -- cycle ;
\draw    (315.8,328.9) -- (358,272) ;
\draw    (318,212) -- (358,272) ;
\draw    (318,212) -- (268.85,247.58) ;
\draw    (428,252) -- (358,272) ;
\draw    (428,252) -- (420,300) ;
\draw    (420,300) -- (350,370) ;
\draw    (408,152) -- (428,252) ;
\draw    (338,102) -- (408,152) ;
\draw    (278,132) -- (318,212) ;
\draw    (171.4,132) -- (278,132) ;
\draw    (78,232) -- (128,328.9) ;
\draw    (78,232) -- (171.4,132) ;
\draw    (138,172) -- (174.95,247.58) ;
\draw    (338,102) -- (278,132) ;
\draw    (171.4,132) -- (240,100) ;
\draw    (240,100) -- (338,102) ;
\draw    (268.85,410.22) -- (350,370) ;
\end{tikzpicture}

我想知道是否有更优雅的方法来做到这一点。

在此处输入图片描述

答案1

有多种方法来绘制顺序 4亚四面体,它实际上是一个截角八面体。一组标准坐标是 {(0,±1,±2), (0,±2,±1), (±1,0,±2), (±2,0,±1), (±1,±2,0), (±2,±1,0)}。因此,我们设置这些坐标并绘制:

在此处输入图片描述

以下是帮助您入门的代码。您可以添加标签、颜色、阴影、隐藏边缘、更改视角等。

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[z={(0,0,.5)}, line join=round]
\foreach [var=\x, var=\y, var=\z, count=\n] in {
2/1/0,2/0/1,2/-1/0,2/0/-1,
1/0/2,0/1/2,-1/0/2,0/-1/2,
1/2/0,0/2/1,-1/2/0,0/2/-1,
-2/1/0,-2/0/1,-2/-1/0,-2/0/-1,
1/0/-2,0/1/-2,-1/0/-2,0/-1/-2,
1/-2/0,0/-2/1,-1/-2/0,0/-2/-1
}{\coordinate (n\n) at (\x,\y,\z);}
\draw (n1)--(n2)--(n3)--(n4)--cycle;
\draw (n5)--(n6)--(n7)--(n8)--cycle;
\draw (n9)--(n10)--(n11)--(n12)--cycle;
\draw (n21)--(n22)--(n23);
\draw (n13)--(n14)--(n15);
\draw (n6)--(n10);
\draw (n2)--(n5);
\draw (n8)--(n22);
\draw (n15)--(n23);
\draw (n7)--(n14);
\draw (n11)--(n13);
\draw (n1)--(n9);
\draw (n3)--(n21);
\end{tikzpicture}

\end{document}

也可以看看这个问题以及有关绘制截头八面体的更多方法的答案。

答案2

这完全取决于个人意见。如果图表的形状与你制作的完全一样,那么你可能已经找到了一个很好的解决方案。

如果我想减少代码量,我会这样处理问题:在 foreach 循环中使用坐标进行绘图。当然,输入所有坐标非常麻烦。

\documentclass[border=1cm]{standalone}

\usepackage{tikz}

\begin{document}
    
    \begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]       
            
        \draw[line width=0.5mm, black ] (315.8,328.9)
            \foreach \x/\y in {315.8/328.9,268.85/410.22,174.95/410.22,128/328.9,174.95/247.58,268.85/247.58,315.8/328.9,358/272,318/212,268.85/247.58}
            {-- (\x,\y)};
        \end{tikzpicture}
        
\end{document}

在此处输入图片描述

相关内容