Tikz: 선으로부터 수직

Tikz: 선으로부터 수직

와 함께tikz-pgf 점에서 선까지 수직선을 그릴 수 있습니다. 수직선을 그리는 강력한 방법이 있습니까?~에서요점? 예를 들어, 다음 코드에서는 선의 특정 지점에서 바깥쪽으로 수직을 높이고 싶다고 가정합니다 BC.

\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
    \coordinate (A) at (0,0);
    \coordinate (B) at (2,4);
    \coordinate (C) at (8,0);

    \draw(A)--(B)--(C)--cycle;
    \draw[red] (B) -- ($(A)!(B)!(C)$);

    \node[label={below left:$A$}] at (A) {};
    \node[label={above:$B$}] at (B) {};
    \node[label={below right:$C$}] at (C) {};
\end{tikzpicture}
\end{document}

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

답변1

방금 이런 스타일로 썼는데이 답변. 구문을 약간 변경했으므로 다음과 같이 말해야 합니다.

\draw[blue,vert={of {(B)--(C)} at (3,0)}];

(3,0)에 도달할 때까지 수직선을 그 립니다 BC. 그리고 vert outwards거리 수정자의 래퍼(pgfmanual의 13.5.4 거리 수정자 섹션 참조)를 추가했으며 다음과 같이 사용할 수 있습니다.

    \draw[blue,vert outwards={from {($(B)!0.3!(C)$)} by 3cm on line to {(C)}}];

MWE

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[vert/.style args={of #1 at #2}{insert path={%
#2 -- (intersection cs:first
  line={#1}, second line={#2--($#2+(0,10)$)}) }},
vert outwards/.style args={from #1 by #2 on line to #3}{insert path={
#1 -- ($#1!#2!90:#3$)
}}]
    \coordinate (A) at (0,0);
    \coordinate (B) at (2,4);
    \coordinate (C) at (8,0);

    \draw(A)--(B)--(C)--cycle;
    \draw[red] (B) -- ($(A)!(B)!(C)$);

    \node[label={below left:$A$}] at (A) {};
    \node[label={above:$B$}] at (B) {};
    \node[label={below right:$C$}] at (C) {};
    \draw[blue,vert={of {(B)--(C)} at (3,0)}];
    \draw[blue,vert outwards={from {($(B)!0.3!(C)$)} by 3cm on line to {(C)}}];
\end{tikzpicture}
\end{document}

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

답변2

라인의 특정 지점을 정의하려는 경우(B)--(C)상대 위치에다음과 같은 간단한 해결책으로:

\documentclass[tikz,border=10pt]{standalone}

\begin{document}
\begin{tikzpicture}
    \coordinate[label=below left:$A$]   (A) at (0,0);
    \coordinate[label=above:$B$]        (B) at (2,4);
    \coordinate[label=below right:$C$]  (C) at (8,0);

    \draw(A)--(B)-- coordinate[pos=0.3] (aux) % <--- coordinate of the point
                    (C)--cycle;
    \draw[red] (aux) -- (aux |- A);
\end{tikzpicture}
\end{document}

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

답변3

미안, 틱즈는 아니야. @hpekris의 아이디어를 이해합니다.

\documentclass[pstricks,border=10pt]{standalone}
\usepackage{pst-eucl}
\begin{document}
\foreach \i in {.3,.5,.7}{
\begin{pspicture}[PointSymbol=none,linejoin=1](0,-1)(8,4)
\pnodes(0,0){A}(2,4){B}(8,0){C}(4,0){I}
\psline(A)(B)(C)(A)
\pstHomO[HomCoef=\i,PosAngle=75]{B}{C}[M]
\pstProjection[PosAngle=-90]{A}{C}{B}[H]
\pstProjection[PosAngle=-90]{A}{C}{M}[M']
\pcline(M)(M')
\pcline(B)(H)
\end{pspicture}}
\end{document}

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

답변4

비교 목적으로만 사용되는 또 다른 PSTricks 솔루션입니다.

몇 가지 가능한 트릭을 제공하지만 원하지 않는 부분은 제거할 수 있습니다.

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl}
\begin{document}
\foreach \i in {1,2,3}{%
\begin{pspicture}(8,5)
\pstTriangle(1,1){A}(7,1){B}(3,4){C}
\psline(C)(C|A)
\pnode([nodesep=\i]{B}C){P}
\psline(P)(P|A)
\pnode([nodesep=\i,offset=\i]{B}C){Q}
\psline[linecolor=red](P)(Q)
\end{pspicture}}
\end{document}

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

관련 정보