por favor considere este código
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,intersections}
\begin{document}
\begin{tikzpicture}[node distance=-\pgflinewidth]
\node[fill=black] (a) {};
\node[fill=black, xshift=\linewidth] (c) {};
\node[xshift=\linewidth*0.7] (b) {...};
\draw [name path=line1] (a) -- (b);
\draw (b) -- (c);
\node[draw, rectangle, above=of a, yshift=0.5cm, xshift=1cm] (foo1) {Foo 1};
\node[draw, rectangle, right=0.5cm of foo1] (foo2) {Foo 2};
\draw (foo1) -- TODO;
\draw (foo2) -- TODO;
\end{tikzpicture}
\end{document}
Não consigo desenhar uma linha vertical reta do nó foo1 e foo2 para baixo até o caminho line1. Não quero dar coordenadas absolutas. Tentei resolver esse problema com interseções, mas como minha posição inicial é um nó, isso não parece funcionar. Alguma sugestão?
Responder1
Assim?
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,intersections}
\begin{document}
\begin{tikzpicture}[node distance=-\pgflinewidth]
\node[fill=black] (a) {};
\node[fill=black, xshift=\linewidth] (c) {};
\node[xshift=\linewidth*0.7] (b) {...};
\draw [name path=line1] (a) -- (b);
\draw (b) -- (c);
\node[draw, rectangle, above=of a, yshift=0.5cm, xshift=1cm] (foo1) {Foo 1};
\node[draw, rectangle, right=0.5cm of foo1] (foo2) {Foo 2};
\path[name path=fl1] (foo1.270)coordinate(f1)--++(-90:2);
\path[name path=fl2] (foo2.270)coordinate(f2)--++(-90:2);
\path[name intersections={of=fl1 and line1,by={a}}];
\path[name intersections={of=fl2 and line1,by={b}}];
\draw (f1)--(a);
\draw (f2)--(b);
% \draw (foo1) -- TODO;
% \draw (foo2) -- TODO;
\end{tikzpicture}
\end{document}
Responder2
TikZ permite localizar o ponto localizado na intersecção da linha horizontal que passa a
e a vertical foo1
que você procura é a sintaxe (foo1|-a)
ou ambas com a sintaxe (a-|foo1)
.
Cito o manual TikZ 3.1.4
Em geral, o significado de
(p |- q)
é ointersecção de uma linha vertical que passa porp
uma linha horizontal que passa porq
.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,intersections}
\begin{document}
\begin{tikzpicture}[node distance=-\pgflinewidth]
\node[fill=black] (a) {};
\node[fill=black, xshift=\linewidth] (c) {};
\node[xshift=\linewidth*0.7] (b) {...};
\draw [name path=line1] (a) -- (b);
\draw (b) -- (c);
\node[draw, rectangle, above=of a, yshift=0.5cm, xshift=1cm] (foo1) {Foo 1};
\node[draw, rectangle, right=0.5cm of foo1] (foo2) {Foo 2};
\draw (foo1) -- (a-|foo1);
\draw (foo2) -- (a-|foo2);
\end{tikzpicture}
\end{document}