Tikz: Senkrecht von einer Linie

Tikz: Senkrecht von einer Linie

Mit tikz-pgfkann ich eine Senkrechte von einem Punkt zu einer Linie zeichnen. Gibt es eine robuste Methode zum Zeichnen einer Senkrechten?ausein Punkt? Nehmen wir beispielsweise im folgenden Code an, dass ich eine Senkrechte von einem bestimmten Punkt auf der Linie BCnach außen ziehen möchte.

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

Bildbeschreibung hier eingeben

Antwort1

Ich habe gerade einen solchen Stil geschrieben indiese Antwort. Ich habe die Syntax leicht geändert, Sie müssen also sagen

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

um eine vertikale Linie zu zeichnen, (3,0)die bis zum Punkt geht BC. Und ich habe hinzugefügt, vert outwardswas nur ein Wrapper der Distanzmodifikatoren ist (siehe Abschnitt 13.5.4 Die Syntax der Distanzmodifikatoren des pgfmanuals) und kann verwendet werden als

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

Bildbeschreibung hier eingeben

Antwort2

Wenn Sie einen bestimmten Punkt auf der Linie mit seiner relativen Position definieren möchten (B)--(C), können Sie Ihrenmweals folgende einfache Lösung:

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

Bildbeschreibung hier eingeben

Antwort3

Entschuldigung, nicht tikz. Ich verstehe die Idee von @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}

Bildbeschreibung hier eingeben

Antwort4

Eine weitere PSTricks-Lösung nur zu Vergleichszwecken.

Ich biete einige mögliche Tricks an, aber Sie können die Teile entfernen, die Sie nicht möchten.

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

Bildbeschreibung hier eingeben

verwandte Informationen