Mit tikz-pgf
kann 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 BC
nach 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}
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 outwards
was 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}
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}
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}
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}