tikz: flechas, regla par impar y forma de trapecio; cómo dibujar una flecha a través de un agujero

tikz: flechas, regla par impar y forma de trapecio; cómo dibujar una flecha a través de un agujero

Me gustaría hacer tikz algo como esto:

meta

Con:

% https://tex.stackexchange.com/q/245944
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\standaloneenv{tikzpicture}
\begin{document}
\usetikzlibrary{calc,shapes.geometric}
\begin{tikzpicture}
    \coordinate (hole) at (1ex, 3ex);
    \node[trapezium, trapezium left angle=120, trapezium right angle=60, minimum width=4ex, minimum height=4ex, rotate=30] (layer) {};
    \path[draw, even odd rule]
        {(layer.top left corner) -- (layer.bottom left corner) -- (layer.bottom right corner) -- (layer.top right corner) -- cycle}
        {($(layer.bottom left corner)+(hole)$) ellipse [draw, x radius=1.0ex,y radius=0.8ex, rotate=0]};
    \draw[-]  ($(layer.bottom left corner)+(hole)$)            -- +(0ex, 4ex);
    \draw[->] ($(layer.bottom left corner)+(hole)+(0ex,-3ex)$) -- +(0ex,-2ex);
\end{tikzpicture}
\end{document}

Puedo producir:

mwe

Sin embargo, esta solución parece tosca (redibujar el trapezoide, dividir la flecha en dos,...) y un poco sin vida.

¿Cómo puedo usarlo even odd rulesin trapeziumel extra \pathy dibujar una flecha a través del even odd ruleagujero sin adivinar el tamaño del espacio entre flechas?

Respuesta1

Esto utiliza la regla par impar en un \clip. Tenga en cuenta que aún debe separar el primer plano y el fondo para los objetos 3D.

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\standaloneenv{tikzpicture}
\begin{document}
\usetikzlibrary{calc,shapes.geometric}
\begin{tikzpicture}
    \coordinate (hole) at (1ex, 3ex);
    \node[trapezium, trapezium left angle=120, trapezium right angle=60, minimum width=4ex, minimum height=4ex, rotate=30] (layer) {};
    \path[draw]
        (layer.top left corner) -- (layer.bottom left corner) -- (layer.bottom right corner) -- (layer.top right corner) -- cycle
        ($(layer.bottom left corner)+(hole)$) coordinate(C) ellipse [draw, x radius=1.0ex,y radius=0.8ex, rotate=0];
    \path[->] (C) ++(0ex, 4ex) -- ++(0ex,-8ex);% grow bounding box
    \begin{scope}[even odd rule]
    \clip (current bounding box.south west) rectangle  (current bounding box.north east)
        (layer.top left corner) -- (layer.bottom left corner) -- (layer.bottom right corner) -- cycle;
    \draw[->] (C) ++(0ex, 4ex) -- ++(0ex,-8ex);
    \end{scope}
\end{tikzpicture}
\end{document}

información relacionada