答案1
虽然有些人可能能够从这样的屏幕截图中唯一地确定 3D 坐标,但我不能,所以我不得不猜测。给定一些 3D 坐标,使用 绘制东西很简单tikz-3dplot
。可以使用基本着色语法实现颜色渐变。
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{tikz-3dplot}
\usetikzlibrary{3d,angles,quotes}
\definecolor{prbright}{RGB}{222,233,233}
\definecolor{prtop}{RGB}{192,217,221}
\definecolor{prdark}{RGB}{170,197,194}
\definecolor{prleft}{RGB}{178,200,202}
\begin{document}
\tdplotsetmaincoords{110}{-12}
\begin{tikzpicture}[tdplot_main_coords,line join=miter]
\pgfmathsetmacro{\h}{8}
\pgfmathsetmacro{\w}{8}
\begin{scope}[shift={(-0.6*\w,0,0.2*\h)}]
\draw[-latex] (0,0,0) -- (1,0,0) node[pos=1.1]{$x$};
\draw[-latex] (0,0,0) -- (0,1,0) node[pos=1.1]{$y$};
\draw[-latex] (0,0,0) -- (0,0,1) node[pos=1.1]{$z$};
\end{scope}
\draw[fill=prbright] (0,-\w/2,-\h) coordinate (btip) -- (-\w/2,-\w/2,0) coordinate (bl)
-- (\w/2,-\w/2,0) coordinate (br) -- cycle;
\draw[fill=prleft] (btip) -- (0,\w/2,-\h) coordinate (ftip)
-- (-\w/2,\w/2,0) coordinate (fl) -- (bl) -- cycle;
\draw[fill=prdark] (btip) -- (ftip)
-- (\w/2,\w/2,0) coordinate (fr) -- (br) -- cycle;
\draw[fill=prtop] (bl) -- (fl) -- (fr) -- (br) -- cycle;
\draw[thick,dashed] (0,4,-5) coordinate(A) -- (0,4,7);
\draw[line width=2mm,-latex,red] (-2,6,-2) coordinate(C) -- (0,4,0) coordinate
(B) pic [draw,-,line width=0.6pt,red,angle radius=1cm,"$\alpha$",angle
eccentricity=1.2]
{angle = C--B--A};
\begin{scope}[canvas is xz plane at y=4,transform shape]
\draw[red,thick,latex-] (3,1) node[black,above right]{$k_x$} -| (0,6);
\draw[red,thick,top color=white,bottom color=red!80,middle color=red!20]
(2,1) -| (0,5) to[out=-90,in=135] cycle;
\end{scope}
\end{tikzpicture}
\end{document}