
Estou tentando criar linhas paralelas em tikz
. Embora eu possa criar essas linhas, não consigo controlar o comprimento dessas linhas, e quero que elas parem na frente da caixa vermelha.
Meu código é
\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}
Minha saída é
Alguma ideia de como controlar o comprimento e o ponto final da linha paralela?
Responder1
Assumindo que as linhas paralelas são ortogonais ao "detector", então os modificadores de projeção podem ser usados (veja "A Sintaxe dos Modificadores de Projeção" no manual), que são desenhados em azul abaixo. Deixei as linhas tracejadas originais para comparação.
\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}
Responder2
Para uma solução rápida e suja, sugiro usar coordenadas polares para manter as linhas paralelas. Então você pode usar o segundo parâmetro para aproximar o comprimento necessário para atingir o 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}