我正在尝试根据一本 20 年前的教科书重新创建下图:
到目前为止我已经能够做到以下几点:
使用以下 Tikz 代码:
\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,hobby,arrows.meta,3d}
\begin{document}
\begin{tikzpicture}[
scale=0.5,
pin distance=3cm,
every pin/.style={inner sep=1pt},
every pin edge/.style={black,very thick},
line width=2pt,
font=\Huge,
axisProp/.style={x={(-136:2cm)},
y={(-15:2cm)},
z={(90:2cm)}},
axis/.style={x={(-136:2cm)},
y={(-15:4.5cm)},
z={(90:3cm)}}]
\begin{scope}[shift={(-10,-4.7)},axisProp,>=Stealth]
\draw[->] (0,0,0) -- (3,0,0);
\node at (3.4,0,0) {$x$};
\draw[->] (0,0,0) -- (0,13,0);
\node at (0,13.4,0) {$y$};
\draw[->] (0,0,0) -- (0,0,9);
\node at (0,0,9.4) {$z$};
\end{scope}
\shade[ball color=green!50,closed hobby] plot coordinates
{(15.6,-1.6) (14.2,5.4) (8.1,10.3) (1.5,11.5) (-6.2,10.7) (-12.5,7.5) (-16,1)
(-14,-4.5) (-9,-6.5) (-5.5,-7) (-1.4,-10.3) (2.5,-12) (8,-12) (13.8,-7.4)};
\node at (-13.9,2) {Boundary $D$};
\begin{scope}[shift={(1.7,0.1)},
axis]
\begin{scope}[canvas is zy plane at x=0]
\shade[left color=green!50!lightgray,right color=lightgray]
(0,0) -- +(0,2.2) arc[start angle=90,end angle=0,x radius=3.1cm,y radius=2.2cm] -- cycle;
\end{scope}
\begin{scope}[canvas is xz plane at y=0]
\shade[left color=green!50!lightgray,right color=lightgray]
(0,0) -- +(0,3.1) arc[start angle=90,end angle=0,x radius=3.6cm,y radius=3.1cm] -- cycle;
\end{scope}
\begin{scope}[canvas is xy plane at z=0]
\shade[left color=green!50!lightgray,right color=lightgray]
(0,0) -- +(0,2.2) arc[start angle=90,end angle=0,x radius=3.6cm,y radius=2.2cm] -- cycle;
\coordinate (c1) at (0,0);
\coordinate (c2) at (1,0);
\coordinate (c3) at (1,1);
\coordinate (c4) at (0,1);
\end{scope}
\begin{scope}[canvas is xy plane at z=1]
\coordinate (c5) at (0,0);
\coordinate (c6) at (1,0);
\coordinate (c7) at (1,1);
\coordinate (c8) at (0,1);
\end{scope}
\end{scope}
\fill[fill=red!50,fill opacity=0.5]
(c1) -- (c2) -- (c6) -- (c5) -- cycle
(c1) -- (c4) -- (c8) -- (c5) -- cycle
(c1) -- (c2) -- (c3) -- (c4) -- cycle;
\draw[red,join=round] (c1) -- (c2) -- (c3) -- (c4) -- cycle;
\draw[red] (c1) -- (c5);
\fill[fill=red!50,fill opacity=0.5]
(c3) -- (c4) -- (c8) -- (c7) -- cycle
(c5) -- (c6) -- (c7) -- (c8) -- cycle;
\draw[red,join=round] (c5) -- (c6) -- (c7) -- (c8) -- cycle;
\node[circle,
fill=blue,
minimum size=5mm,
outer sep=0pt,
pin={80:{\Huge $\Delta V$}}] at ($(c5)!0.5!(c3)$){};
\fill[fill=red!50,fill opacity=0.5]
(c2) -- (c3) -- (c7) -- (c6) -- cycle;
\draw[red,join=round] (c2) -- (c6) (c3) -- (c7) (c8) -- (c4) -- (c3) -- (c2) (c6) -- (c7);
\begin{scope}[
every node/.style={circle,minimum size=0pt,inner sep=0pt},
every pin/.style={inner sep=-5pt,outer sep=0pt},
pin distance=1.35cm
]
\node[pin={300:{\Huge $\Delta x_k$}}] at ($(c3)!0.5!(c4)$){};
\node[pin={220:{\Huge $\Delta y_k$}}] at ($(c2)!0.5!(c3)$){};
\node[pin={30:{\Huge $\Delta z_k$}}] at ($(c4)!0.5!(c8)$){};
\node at (3.1,-0.9) {$\Phi$};
\end{scope}
\end{tikzpicture}
\end{document}
但是我在创建小表面图案时遇到困难,以致它看起来像是在主表面上修补,并且从同一表面图案的中心开始绘制四个矢量。
任何帮助是极大的赞赏。