\documentclass[tikz,border=10pt]{standalone} \usetikzlibrary{calc} \begin{document} \begin{tikzpicture}[dot/.style={circle,inner sep=1pt,fill,label={#1},name=#1}, extended line/.style={shorten >=-#1,shorten <=-#1}, extended line/.default=1cm] \node [dot=A] at (0,0) {}; \node [dot=B] at (3,1) {}; \node [dot=P] at (1.9,-1.6) {}; \draw [extended line=0.5cm] (A) -- (B); \draw [extended line] ($(A)!(P)!(B)$) -- (P); \fill [red] ($(A)!(P)!(B)$) circle [radius=2pt]; \end{tikzpicture} \end{document}
You can use the calc
library for this, which allows to do coordinate calculations. The expression ($(A)!(P)!(B)$)
yields the projection of (P)
on the line from (A)
to (B)
, for example.
You can extend the lines by using the shorten >
and shorten <
commands with negative values. I’m using them here in a style called extended line
that takes an optional argument to set the length by which to extend the line.