\documentclass[tikz,11pt]{standalone}

\usepackage{tikz}
\usepackage{tikz-3dplot}

\usetikzlibrary{arrows.meta}

\pgfmathsetmacro{\polytopeLineWidth}{1.2pt}
\pgfmathsetmacro{\dotSize}{0.5mm}
\definecolor{fillColor}{rgb}{0.8,0.8,0.8}
\pgfmathsetmacro{\opacity}{0.7}
\pgfmathsetmacro{\rotation}{72}
\pgfmathsetmacro{\zRotation}{30}
% \pgfmathsetmacro{\rotation}{100}
% \pgfmathsetmacro{\zRotation}{30}

\newcommand{\point}[1]{
  \path (#1) node[fill, black, circle, inner sep=\dotSize] {};
}

\begin{document}

\begin{tikzpicture}[line join=bevel, line width=\polytopeLineWidth, scale=1.1]
  \begin{scope}
    \path [draw, -Stealth] (1.7, 2.4) -- node [above] {dual} (3.7, 2.4);
    \path [draw, -Stealth] (5, -0.5) -- node [right] {convex hull} (5, -1.5);

    \node at (0, 0) {$\nabla$};

    \tdplotsetmaincoords{\rotation}{-\zRotation}
    \tdplotsetrotatedcoords{0}{90}{90}

    % \begin{tikzpicture}[tdplot_main_coords]
    %   \draw[thick,->] (0,0,0) -- (1,0,0) node[anchor=north east]{$x$};
    %   \draw[thick,->] (0,0,0) -- (0,1,0) node[anchor=north west]{$y$};
    %   \draw[thick,->] (0,0,0) -- (0,0,1) node[anchor=south]{$z$};
    % \end{tikzpicture}

    \begin{scope}[tdplot_rotated_coords, xshift=0.2cm, yshift=3.4cm]
      % back faces
      \path [draw, fill opacity=\opacity, fill=fillColor] (2.,0.,-1.)--(0.,0.,1.)--(-3.,-2.,-1.)--cycle;
      \path [draw, fill opacity=\opacity, fill=fillColor] (0.,1.,0.)--(0.,0.,1.)--(2.,0.,-1.)--cycle;

      % back points
      \point{1,0,0};
      \point{0.,0.,0.}; % inside

      % front faces
      \path [draw, fill opacity=\opacity, fill=fillColor] (0.,1.,0.)--(2.,0.,-1.)--(-3.,-2.,-1.)--cycle;
      \path [draw, fill opacity=\opacity, fill=fillColor] (0.,0.,1.)--(0.,1.,0.)--(-3.,-2.,-1.)--cycle;

      % front points
      \point{2.,0.,-1.};
      \point{0.,1.,0.};
      \point{0.,0.,1.};
      \point{-3.,-2.,-1.};
    \end{scope}
  \end{scope}

  % \begin{scope}
  %   \path [draw, -Stealth] (1.7, 2.4) --(3.7, 2.4);
  %   \path [draw, -Stealth] (5, -0.5) --(5, -1.5);

  %   \node at (0, 0) {$\nabla$};

  %   \tdplotsetmaincoords{\rotation}{180 - \zRotation}
  %   \tdplotsetrotatedcoords{0}{90}{90}

  %   \begin{scope}[tdplot_rotated_coords, xshift=0.2cm, yshift=3.4cm]
  %     % \begin{scope}[tdplot_rotated_coords]
  %     %   \draw[thick,->] (0,0,0) -- (1,0,0) node[anchor=north east]{$x$};
  %     %   \draw[thick,->] (0,0,0) -- (0,1,0) node[anchor=north west]{$y$};
  %     %   \draw[thick,->] (0,0,0) -- (0,0,1) node[anchor=south]{$z$};
  %     % \end{scope}

  %     % back faces
  %     \path [draw, fill opacity=\opacity, fill=fillColor] (0.,1.,0.)--(2.,0.,-1.)--(-3.,-2.,-1.)--cycle;
  %     \path [draw, fill opacity=\opacity, fill=fillColor] (0.,0.,1.)--(0.,1.,0.)--(-3.,-2.,-1.)--cycle;

  %     % back points
  %     \point{2.,0.,-1.};
  %     \point{0.,1.,0.};
  %     \point{0.,0.,1.};
  %     \point{-3.,-2.,-1.};
  %     \point{0.,0.,0.}; % inside

  %     % front faces
  %     \path [draw, fill opacity=\opacity, fill=fillColor] (2.,0.,-1.)--(0.,0.,1.)--(-3.,-2.,-1.)--cycle;
  %     \path [draw, fill opacity=\opacity, fill=fillColor] (0.,1.,0.)--(0.,0.,1.)--(2.,0.,-1.)--cycle;

  %     % front points
  %     \point{1,0,0};
  %   \end{scope}
  % \end{scope}

  \begin{scope}[xshift=5cm]
    \node at (0, 0) {$\nabla^*$};

    \tdplotsetmaincoords{\rotation}{180 - \zRotation}
    \tdplotsetrotatedcoords{0}{90}{90}
    \begin{scope}[tdplot_rotated_coords, yshift=1.8cm]
      % back faces
      \path [draw, fill opacity=0.7, fill=fillColor] (1.333,-1.,-1.)--(-1.,-1.,-1.)--(-1.,2.5,-1.)--cycle;
      \path [draw, fill opacity=0.7, fill=fillColor] (-1.,-1.,-1.)--(0.4,-1.,1.8)--(-1.,2.5,-1.)--cycle;
      \path [draw, fill opacity=0.7, fill=fillColor] (0.4,-1.,1.8)--(-1.,-1.,-1.)--(1.333,-1.,-1.)--cycle;

      % back points
      \point{-1.,-1.,-1.};
      \point{0.,-1.,-1.};
      \point{1.,-1.,-1.};
      \point{-1.,0.,-1.};
      \point{-1.,1.,-1.};
      \point{-1.,2.,-1.};
      \point{0.,-1.,1.};
      \point{0.,0.,-1.}; % on face
      \point{0.,-1.,0.}; % on face
      \point{0.,0.,0.}; % inside

      % front faces
      \path [draw, fill opacity=0.7, fill=fillColor] (0.4,-1.,1.8)--(1.333,-1.,-1.)--(-1.,2.5,-1.)--cycle;

      % front points
      \point{0.,1.,-1.};
      \point{0.,0.,1.};
      \point{1.,-1.,0.};
    \end{scope}
  \end{scope}

  \begin{scope}[xshift=5cm, yshift=-6.5cm]
    \node at (0, 0) {$\Delta$};

    \tdplotsetmaincoords{\rotation}{180 - \zRotation}
    \tdplotsetrotatedcoords{0}{90}{90}
    \begin{scope}[tdplot_rotated_coords, xshift=-0.2cm, yshift=1.8cm]
      % back edges
      \path [draw, densely dotted] (0.4,-1.,1.8)--(1.333,-1.,-1.);
      \path [draw, densely dotted] (1.333,-1.,-1.)--(-1.,2.5,-1.);
      \path [draw, densely dotted] (-1.,2.5,-1.)--(0.4,-1.,1.8);
      \path [draw, densely dotted] (1.333,-1.,-1.)--(-1.,-1.,-1.);
      \path [draw, densely dotted] (-1.,-1.,-1.)--(-1.,2.5,-1.);
      \path [draw, densely dotted] (-1.,-1.,-1.)--(0.4,-1.,1.8);

      % back faces
      \path [draw, fill opacity=\opacity, fill=fillColor] (-1.,-1.,-1.)--(0.,-1.,1.)--(0.,0.,1.)--(-1.,2.,-1.)--cycle;
      \path [draw, fill opacity=\opacity, fill=fillColor] (-1.,-1.,-1.)--(-1.,2.,-1.)--(0.,1.,-1.)--(1.,-1.,-1.)--cycle;
      \path [draw, fill opacity=\opacity, fill=fillColor] (0.,-1.,1.)--(-1.,-1.,-1.)--(1.,-1.,-1.)--(1.,-1.,0.)--cycle;

      % back points
      \point{-1.,-1.,-1.};
      \point{-1.,0.,-1.};
      \point{-1.,1.,-1.};
      \point{0.,-1.,-1.};
      \point{0.,-1.,0.}; % on face
      \point{0.,0.,-1.}; % on face
      \point{0.,0.,0.}; % inside

      % front faces
      \path [draw, fill opacity=\opacity, fill=fillColor] (0.,0.,1.)--(0.,1.,-1.)--(-1.,2.,-1.)--cycle;
      \path [draw, fill opacity=\opacity, fill=fillColor] (0.,1.,-1.)--(1.,-1.,0.)--(1.,-1.,-1.)--cycle;
      \path [draw, fill opacity=\opacity, fill=fillColor] (1.,-1.,0.)--(0.,1.,-1.)--(0.,0.,1.)--cycle;
      \path [draw, fill opacity=\opacity, fill=fillColor] (1.,-1.,0.)--(0.,0.,1.)--(0.,-1.,1.)--cycle;

      % front points
      \point{1.,-1.,-1.};
      \point{1.,-1.,0.};
      \point{0.,1.,-1.};
      \point{0.,-1.,1.};
      \point{0.,0.,1.};
      \point{-1.,2.,-1.};
    \end{scope}
  \end{scope}

  \begin{scope}[yshift=-6.5cm]
    \path [draw, -Stealth] (3.7, 2.7) -- node [above] {dual} (1.7, 2.7);

    \node at (0, 0) {$\Delta^{\!*}$};

    \tdplotsetmaincoords{\rotation}{-\zRotation}
    \tdplotsetrotatedcoords{0}{90}{90}
    \begin{scope}[tdplot_rotated_coords, xshift=0.2cm, yshift=3.4cm]
      % back edges
      \path [draw, fill opacity=\opacity, fill=fillColor] (0.,0.,1.)--(-2.,-2.,-1.)--(2.,0.,-1.) --cycle;
      \path [draw, fill opacity=\opacity, fill=fillColor] (-3.,-2.,-1.)--(-2.,-2.,-1.)--(0.,0.,1.)--(-2.,-1.,0.) --cycle;
      \path [draw, fill opacity=\opacity, fill=fillColor] (0.,1.,0.)--(0.,0.,1.)--(2.,0.,-1.) --cycle;

      % back faces
      \path [draw, densely dotted] (2.,0.,-1.)--(-3.,-2.,-1.);
      \path [draw, densely dotted] (-3.,-2.,-1.)--(0.,1.,0.);
      \path [draw, densely dotted] (0.,0.,1.)--(-3.,-2.,-1.);

      % back points
      \point{-1.,-1.,0.};
      \point{1.,0.,0.};
      \point{0.,0.,0.}; % inside

      % front faces
      \path [draw, fill opacity=\opacity, fill=fillColor] (-1.,0.,-1.)--(-3.,-2.,-1.)--(-2.,-1.,0.)--(0.,1.,0.) --cycle;
      \path [draw, fill opacity=\opacity, fill=fillColor] (-1.,0.,-1.)--(0.,1.,0.)--(2.,0.,-1.) --cycle;
      \path [draw, fill opacity=\opacity, fill=fillColor] (-1.,0.,-1.)--(2.,0.,-1.)--(-2.,-2.,-1.)--(-3.,-2.,-1.) --cycle;
      \path [draw, fill opacity=\opacity, fill=fillColor] (-2.,-1.,0.)--(0.,0.,1.)--(0.,1.,0.) --cycle;

      % front points
      \point{-3.,-2.,-1.};
      \point{-2.,-2.,-1.};
      \point{-2.,-1.,-1.};
      \point{-2.,-1.,0.};
      \point{-1.,0.,-1.};
      \point{-1.,0.,0.};
      \point{0.,-1.,-1.};
      \point{0.,0.,-1.};
      \point{0.,0.,1.};
      \point{0.,1.,0.};
      \point{1.,0.,-1.};
      \point{2.,0.,-1.};
      \point{-1.,-1.,-1.}; % on face
    \end{scope}
  \end{scope}

  % \begin{scope}[yshift=-6.5cm]
  %   \path [draw, -Stealth] (3.7, 2.7) --(1.7, 2.7);

  %   \node at (0, 0) {$\Delta^{\!*}$};

  %   \tdplotsetmaincoords{\rotation}{180 - \zRotation}
  %   \tdplotsetrotatedcoords{0}{90}{90}
  %   \begin{scope}[tdplot_rotated_coords, xshift=0.2cm, yshift=3.4cm]
  %     % back faces
  %     \path [draw, fill opacity=\opacity, fill=fillColor] (-1.,0.,-1.)--(-3.,-2.,-1.)--(-2.,-1.,0.)--(0.,1.,0.) --cycle;
  %     \path [draw, fill opacity=\opacity, fill=fillColor] (-1.,0.,-1.)--(0.,1.,0.)--(2.,0.,-1.) --cycle;
  %     \path [draw, fill opacity=\opacity, fill=fillColor] (-1.,0.,-1.)--(2.,0.,-1.)--(-2.,-2.,-1.)--(-3.,-2.,-1.) --cycle;
  %     \path [draw, fill opacity=\opacity, fill=fillColor] (-2.,-1.,0.)--(0.,0.,1.)--(0.,1.,0.) --cycle;

  %     % back points
  %     \point{-3.,-2.,-1.};
  %     \point{-2.,-2.,-1.};
  %     \point{-2.,-1.,-1.};
  %     \point{-2.,-1.,0.};
  %     \point{-1.,0.,-1.};
  %     \point{-1.,0.,0.};
  %     \point{0.,-1.,-1.};
  %     \point{0.,0.,-1.};
  %     \point{0.,0.,1.};
  %     \point{0.,1.,0.};
  %     \point{1.,0.,-1.};
  %     \point{2.,0.,-1.};
  %     \point{-1.,-1.,-1.}; % on face
  %     \point{0.,0.,0.}; % inside

  %     % front edges
  %     \path [draw, fill opacity=\opacity, fill=fillColor] (0.,0.,1.)--(-2.,-2.,-1.)--(2.,0.,-1.) --cycle;
  %     \path [draw, fill opacity=\opacity, fill=fillColor] (-3.,-2.,-1.)--(-2.,-2.,-1.)--(0.,0.,1.)--(-2.,-1.,0.) --cycle;
  %     \path [draw, fill opacity=\opacity, fill=fillColor] (0.,1.,0.)--(0.,0.,1.)--(2.,0.,-1.) --cycle;

  %     % front faces
  %     \path [draw, densely dotted] (2.,0.,-1.)--(-3.,-2.,-1.);
  %     \path [draw, densely dotted] (-3.,-2.,-1.)--(0.,1.,0.);
  %     \path [draw, densely dotted] (0.,0.,1.)--(-3.,-2.,-1.);

  %     % front points
  %     \point{-1.,-1.,0.};
  %     \point{1.,0.,0.};
  %   \end{scope}
  % \end{scope}
\end{tikzpicture}

\end{document}
