
Estoy intentando crear líneas paralelas en tikz
. Aunque puedo crear esas líneas, parece que no puedo controlar la longitud de esas líneas, que quiero que se detengan en la cara del cuadro rojo.
mi codigo es
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=0.5]
%target
\draw[fill=gray!30,gray!30] (0,3)rectangle(2,-3);
%tracks
\draw[->,thick] (-2,2)--(0,2);
\draw[->,dashed] (0,2)--(-3,-3);
\draw[->,thick] (-2,1)--(2,1);
\draw[->,dashed] (2,1)-- +($(-3,-3)-(0,2)$);
\draw[->,thick] (-2,-1)--(2,-1);
\draw[->,dashed] (2,-1)-- +($(-3,-3)-(0,2)$);
\draw[->,thick] (-2,-2)--(0,-2);
\draw[->,dashed] (0,-2)-- +($(-3,-3)-(0,2)$);
%detector
\draw[red, rotate around={60:(-1,-3)}] (-3,0) rectangle (-2,-6);
\end{tikzpicture}
\end{document}
Mi salida es
¿Alguna idea sobre cómo controlar la longitud y el punto final de la línea paralela?
Respuesta1
Suponiendo que las líneas paralelas son ortogonales al "detector", entonces se pueden usar los modificadores de proyección (consulte "La sintaxis de los modificadores de proyección" en el manual), que se dibujan en azul a continuación. Dejé las líneas discontinuas originales para comparar.
\documentclass[tikz,border=5]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[scale=0.5]
%target
\draw[fill=gray!30,gray!30] (0,3) rectangle(2,-3);
%detector
\draw[red, rotate around={60:(-1,-3)}]
(-3,0) rectangle (-2,-6)
(-2,0) coordinate (a)
(-2,-6) coordinate (b);
%tracks
\draw[->,thick] (-2,2)--(0,2);
\draw[->,dashed] (0,2)--(-3,-3);
\draw[->,thick] (-2,1)--(2,1);
\draw[->,dashed] (2,1)-- +($(-3,-3)-(0,2)$);
\draw[->,thick] (-2,-1)--(2,-1);
\draw[->,dashed] (2,-1)-- +($(-3,-3)-(0,2)$);
\draw[->,thick] (-2,-2)--(0,-2);
\draw[->,dashed] (0,-2)-- +($(-3,-3)-(0,2)$);
\draw [blue, solid, ->] (0,2) -- ($(a)!(0,2)!(b)$);
\draw [blue, solid, ->] (2,1) -- ($(a)!(2,1)!(b)$);
\draw [blue, solid, ->] (2,-1) -- ($(a)!(2,-1)!(b)$);
\draw [blue, solid, ->] (0,-2) -- ($(a)!(0,-2)!(b)$);
\end{tikzpicture}
\end{document}
Respuesta2
Para una solución rápida y sucia, sugeriría usar coordenadas polares para mantener las líneas paralelas. Luego puedes usar el segundo parámetro para aproximar la longitud necesaria para alcanzar el detector:
\begin{tikzpicture}[scale=0.5]
%target
\draw[fill=gray!30,gray!30] (0,3)rectangle(2,-3);
%tracks
\draw[->,thick] (-2,2)--(0,2);
\draw[->,dashed] (0,2)--+(240:5.8);
\draw[->,thick] (-2,1)--(2,1);
\draw[->,dashed] (2,1)-- +(240:5.9);
\draw[->,thick] (-2,-1)--(2,-1);
\draw[->,dashed] (2,-1)-- +(240:4.2);
\draw[->,thick] (-2,-2)--(0,-2);
\draw[->,dashed] (0,-2)-- +(240:2.3);
%detector
\draw[red, rotate around={60:(-1,-3)}] (-3,0) rectangle (-2,-6);
\end{tikzpicture}