用于 3D 矩阵表示的阴影矩形

用于 3D 矩阵表示的阴影矩形

我已经尝试了所有的 tex 论坛以及 texwelt.de,但是我找不到在乳胶中绘制以下内容的简单方法。

大家有什么想法吗?

在此处输入图片描述

更新:我已经到达此处。

\documentclass{book}
\usepackage{parskip}
\usepackage{tikz,pgf}
\usetikzlibrary{matrix,backgrounds}
\usetikzlibrary{3d}

\begin{document}

\begin{tikzpicture}[x=(15:.5cm), y=(90:.5cm), z=(330:.5cm), >=stealth]

\foreach \z in {5,8} 
\foreach \x in {0,...,1}
\foreach \y [evaluate={\b=random(0, 1);}] in {0,...,3}
\filldraw [fill=none] (\x, \y, \z) -- (\x+1, \y, \z) -- (\x+1, \y+1, \z) --
(\x, \y+1, \z) -- cycle (\x+.5, \y+.5, \z) node [yslant=tan(15)] {\b};      

\draw (0, 0, 5) -- (0, 0, 8); 
\draw (2, 0, 5) -- (2, 0, 8);
\draw [dashed] (0, 4, 5) -- (0, 4, 8);
\draw [dashed] (2, 4, 5) -- (2, 4, 8);

\end{tikzpicture}

在此处输入图片描述

答案1

可能是这样的吗?

3D(假)矩阵/矩阵

我从您的代码开始,但我以前tikz-3dplot会自己计算。我们绘制两个矩阵:一个在图层上background,一个在main图层上(这是默认设置)。阴影侧线也放置在背景中。

进一步描述一下这个图表可能会有所帮助。我做了几件我不需要做的事情,只是因为发生的事情并不明显。

矩阵被命名,以便可以使用其中的节点来定义应在侧面着色的区域。背景是b;另一个是f。因此循环连接b-1-1f-1-1,依此类推,适用于所有单元格。我们跳过每个中间的一列,以便两个垂直列具有类似于目标分隔的东西。使用粗线line widthdraw opacity=0创建较小的水平间隙。(如果您愿意,您还可以摆弄行和列分隔 - 请参阅 TiZ 手册。

\documentclass[border=10pt]{standalone}
\usepackage{tikz,tikz-3dplot,calc}
\usetikzlibrary{matrix,backgrounds}
\begin{document}
\tdplotsetmaincoords{70}{110}%
\newlength\mylength\settowidth\mylength{\Large$99$}\newlength\mywidth\settototalheight\mywidth{\Large$99$}\ifdim\mywidth>\mylength\setlength\mylength{\mywidth}\fi
\tikzset{%
  my matrix/.style={%
    matrix of math nodes,
    nodes={line width=2.5pt, fill opacity=.85, font=\Large, text width=\mylength, text centered, text height=\mylength, text depth=0mm, draw, draw opacity=0, text opacity=1, fill=#1 }
  }
}%
\begin{tikzpicture}
  [
    tdplot_main_coords,
  ]
  \begin{scope}[on background layer]
    \matrix (b) [my matrix=black!75] at (-1,0,0) { 7 && 8 \\ 9 && 10 \\ 11 && 12\\};
  \end{scope}
    \matrix (f) [my matrix=gray!10] at (0,0,0) { 1 && 2 \\ 3 && 4 \\ 5 && 6\\};
  \begin{scope}[on background layer]
    \foreach \i in {3,1} \foreach \j in {3,2,1} \foreach \k/\m/\n/\l in {south west/north west/45/-45,south east/north east/135/-135} \fill [gray!20, fill opacity=.5] ([shift=(\n:1.25pt)]f-\j-\i.\k) -- ([shift=(\n:1.25pt)]b-\j-\i.\k) -- ([shift=(\l:1.25pt)]b-\j-\i.\m) -- ([shift=(\l:1.25pt)]f-\j-\i.\m) -- cycle;
  \end{scope}
\end{tikzpicture}
\end{document}

相关内容