Zeichnen Sie eine vertikale Linie vom Knoten, bis er auf die horizontale Linie trifft.

Zeichnen Sie eine vertikale Linie vom Knoten, bis er auf die horizontale Linie trifft.

Bitte beachten Sie diesen Code

\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}

Ich schaffe es nicht, eine gerade vertikale Linie von Knoten foo1 und foo2 nach unten zum Pfad line1 zu zeichnen. Ich möchte keine absoluten Koordinaten angeben. Ich habe versucht, dieses Problem mit Schnittpunkten zu lösen, aber da meine Startposition ein Knoten ist, scheint das nicht zu funktionieren. Irgendwelche Vorschläge?

Antwort1

So was?

\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}

Bildbeschreibung hier eingeben

Antwort2

Mit TikZ können Sie den Punkt am Schnittpunkt der horizontalen Linie lokalisieren, die durch aund die vertikale Linie verläuft. Der foo1von Ihnen gesuchte Punkt ist die Syntax (foo1|-a)oder beides mit der Syntax (a-|foo1).

Ich zitiere das TikZ 3.1.4 Handbuch

Im Allgemeinen ist die Bedeutung von(p |- q) ist die Bedeutung vonSchnittpunkt einer vertikalen Linie durchp und einer horizontalen Linie durchq.

Bildschirmfoto

\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}

verwandte Informationen