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