수평선에 도달할 때까지 노드에서 수직선을 그립니다.

수평선에 도달할 때까지 노드에서 수직선을 그립니다.

이 코드를 고려해 보세요

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

노드 foo1 및 foo2에서 경로 line1까지 직선 수직선을 그리는 데 실패했습니다. 절대적인 좌표를 주고 싶지는 않습니다. 이 문제를 교차점으로 해결하려고 시도했지만 시작 위치가 노드이므로 작동하지 않는 것 같습니다. 어떤 제안이 있으십니까?

답변1

이와 같이?

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

여기에 이미지 설명을 입력하세요

답변2

TikZ를 사용하면 통과하는 수평선의 교차점에 있는 점을 찾을 수 있으며 찾고 있는 a수직선은 구문 또는 둘 다 구문 입니다 .foo1(foo1|-a)(a-|foo1)

TikZ 3.1.4 매뉴얼을 인용합니다.

일반적으로 의 의미는 (p |- q)다음과 같습니다.수직선 p과 수평선 의 교차점q.

스크린샷

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

관련 정보