在 tikz 上绘制的 3D 棱镜

在 tikz 上绘制的 3D 棱镜

在 tikz 中重新创建此图形的最佳策略是什么?我想在红色“三角形”区域添加一些颜色渐变(底部较暗,顶部较亮)。此外,该区域较大的一侧应该略微弯曲,如图所示。在此处输入图片描述

答案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}

在此处输入图片描述

相关内容