Background
A secondary school student posted a coordinate geometry question on a Discord homework help server. A helper replied to that question with an illustration of the Perpendicular Distance Formula
where $L$ is the line $Ax + By + C = 0$ without proof.
Goal
To provide an illustrated derivation of this formula.
Recall
A basic property of the dot product: the “algebraic definition” is equivalent to the “geometric definition”.
where $\theta$ is the angle between $\vec{a}$ and $\vec{b}$.
Illustration
In fact, $\lvert C \rvert$ ($C$ comes from the equation of $L$) is the product of
- $d(O, L)$: (perpendicular) distance between the origin and $L$, and
- $\color{red}{\lVert \vec{\mathbf{n}} \rVert}$: the magnitude (or length) of the normal vector $\color{red}{\vec{\mathbf{n}}}$.
Source code
-
amsmath
has to be loaded for multi-line equations withaligned
. I don’t know (and I’ve no time to find out) whyalign
doesn’t work inside a TikZnode
. -
On Discord,
mycolor
s are 60% white. -
The code for the second figure had exceeded the limits of 2,000 characters, so I cut down the title and some coloring in the title so that it passed the TeXit bot.
-
I first hard-coded the coordinates of the
\node[draw]
, but on Discord, it overlapped with the straight line $L$. To solve this, I put it- at
(P0 |- P)
: below $P_0$ (or $N_0$) and on the left of $P$ anchor=north
so that the top centeral point of the box is set to the aforementioned point.
- at
-
In the first figure, thanks to my LaTeX plugin in VS code, I could quickly input
($ (P)!(N1)!(P0) $)
with one click and a few modifications. This denotes the (perpendicular) projection of $N_1$ on line $\overline{P_0P}$. -
I’m not sure if the middle argument
<ratio>
for convex combination of two points(A)
and(B)
:($ (A)!<ratio>!(B) $)
in TikZcalc
library accepts values outside of the closed interval [0,1]. I learnt from TeX.SE the following trick.\path (A) -- (B) coordinate[pos=-0.5] (start) coordinate[pos=1.5] (end); \draw (start) -- (end);
\path (A) -- (B);
alone won’t draw the line segment bewteen(A)
and(B)
.
\documentclass[preview]{standalone}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\colorlet{myblue}{blue}
\colorlet{myred}{red}
\begin{figure}
\centering
\caption{A normal vector of the line $Ax + By + C = 0$ is $\color{myred}{\vec{\mathbf{n}} = (A,B)}$}
\begin{tikzpicture}
% P* on line L
\coordinate[label=below left:${(x_0,y_0)}$] (P0) at (1,1);
\coordinate[label=below:${(x,y)}$] (P) at (4,0);
% N* on normal vector (A,B)
\coordinate (N1) at (-1, 4);
\coordinate (N0) at ($ (P)!(N1)!(P0) $);
% draw point labels
\draw (P) node {$\times$};
\draw (P0) node {$\times$};
% draw line and vector P->P_0
\draw[-stealth,thick,myblue] (P0) -- (P)
node[midway,sloped,above=0.5cm,anchor=south,myblue]{$\vec{\mathbf{r}}(x,y) = (x-x_0,y-y_0)$}
coordinate[pos=-1](start)
coordinate[pos=1.5](end);
\draw[dashed] (start) -- (end);
% draw normal vector n = N0->N1
\draw[-stealth,thick,myred] (N0) -- (N1)
node[midway,left,myred] {$\vec{\mathbf{n}} = (A,B)$};
\node[draw, anchor=north] at (P0 |- P) {
$\begin{aligned}
\color{myred}{\vec{\mathbf{n}}} \cdot \color{myblue}{\vec{\mathbf{r}}} &= 0 \\
\color{myred}{A}\color{myblue}{(x-x_0)} + \color{myred}{B}\color{myblue}{(y-y_0)} &= 0 \\
Ax + By \underbrace{-(Ax_0 + By_0)}_{C} &= 0
\end{aligned}$
};
\end{tikzpicture}
\end{figure}
\begin{figure}
\centering
\caption{Distance of a point $(x_1,y_1)$ from the line $Ax + By + C = 0$ is ${\color{gray}{\vec{\mathbf{d}}}} \cdot {\color{myred}{\vec{\mathbf{n}}}}/{\color{myred}{\lVert \vec{\mathbf{n}} \rVert}}$}
\begin{tikzpicture}
% P* on line L
\coordinate (P0) at (1,1);
\coordinate[label=below:${(x,y)}$] (P) at (4,0);
% N* on normal vector (A,B)
\coordinate (N1) at (-1, 4);
\coordinate[label=below left:${(x_0,y_0)}$] (N0) at ($ (P)!(N1)!(P0) $);
% P1 = (x_1,y_1)
\path (N0) -- (N1)
coordinate[pos=2,label=above right:${(x_1,y_1)}$] (P1) at (-1, 4);
% draw point labels
\draw (P) node {$\times$};
\draw (P1) node {$\times$};
\draw (N0) node {$\times$};
% draw line and vector P->P_0
\draw[-stealth,thick,myblue] (N0) -- (P)
node[midway,sloped,above=0.5cm,anchor=south,myblue]{$\vec{\mathbf{r}}(x,y) = (x-x_0,y-y_0)$}
coordinate[pos=-0.3](start)
coordinate[pos=1.5](end);
\draw[dashed] (start) -- (end);
% draw vector N0->P1
\draw[-stealth,thick,dashed,gray] (N0) -- (P1)
node[pos=0.7,anchor=west,gray]{${\mathbf{d}} = (x_1-x_0,y_1-y_0)$};
% draw normal vector n = N0->N1
\draw[-stealth,thick,myred] (N0) -- (N1)
node[midway,left,myred] {$\vec{\mathbf{n}} = (A,B)$};
\node[draw, anchor=north] at (N0 |- P) {
$\begin{aligned}
d((x_1,y_1), L) &= \frac{{\color{gray}{\vec{\mathbf{d}}}} \cdot {\color{myred}{\vec{\mathbf{n}}}}}{\color{myred}{\lVert \vec{\mathbf{n}} \rVert}} \\
&= \frac{\color{myred}{A}\color{gray}{(x_1-x_0)} + \color{myred}{B}\color{gray}{(y_1-y_0)}}{\color{myred}{\sqrt{A^2 + B^2}}} \\
&= \frac{Ax_1 + By_1 - (Ax_0 + By_0)}{\color{myred}{\sqrt{A^2 + B^2}}} \\
&= \frac{Ax_1 + By_1 + C}{\color{myred}{\sqrt{A^2 + B^2}}}
\end{aligned}$
};
\end{tikzpicture}
\end{figure}
\end{document}