Trouver le coefficient directeur de la droite perpendiculaire à une autre droite


Soit la droite d'équation:

\begin{equation}
y = a * x + b
\end{equation}

avec comme coefficient directeur a = -2.5 et d'ordonnée à l'origine b = 5.0 (en bleu sur la figure). L'objectif est de trouver le coefficient directeur $a'$ de la droite perpendiculaire à celle-ci (en orange sur la figure).

Pour simplifier les calculs prenons la droite perpendiculaire avec la même ordonnée à l'origine:

\begin{equation}
y' = a' * x + b
\end{equation}

Trouver le coefficient directeur de la droite perpendiculaire à une autre droite

Soit les points $A=(0,b)$, $B=(x,y)$ et $C=(x,y')$. Alors les deux droites sont perpendiculaires si le produit scalaire suivant est égale à 0:

\begin{equation}
\vec{AB}*\vec{AC} = 0
\end{equation}

que l'on peut écrire comme

\begin{equation}
\left( \begin{array}{c}
x \\
y - b
\end{array}\right) * \left( \begin{array}{c}
x \\
y' - b
\end{array}\right)
=0
\end{equation}

en utilisant les équations (1) et (2):

\begin{equation}
\left( \begin{array}{c}
x \\
ax
\end{array}\right) * \left( \begin{array}{c}
x \\
a'x
\end{array}\right)
=0
\end{equation}

le produit scalaire donne:

\begin{equation}
x^2 + a * a' * x^2=0
\end{equation}

ou

\begin{equation}
a * a' * x^2= - x^2
\end{equation}

Finalement on trouve:

\begin{equation}
\boxed{a' = \frac{- 1}{a}}
\end{equation}

Dans notre exemple $a'= -1 / (- 2.5) = 0.4 $

Code python pour tracer les deux figures ci-dessus:

import numpy as np
import matplotlib.pyplot as plt

x_min,x_max = -10.0, 10.0
y_min,y_max = -10.0, 10.0

slope = - 2.5
intercept = 5.0

x = np.linspace(x_min, x_max, 100)
y = slope * x + intercept

fig = plt.figure()

ax = plt.gca()

ax.plot(x, y,linestyle='--')


slope_p = (-1.0 / slope)

y = slope_p * x + intercept
ax.plot(x, y,linestyle='--')

ax.set_aspect('equal')

ax.grid(True)
ax.spines['left'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('zero')
ax.spines['top'].set_color('none')

plt.title('How to get the slope of \n the line perpendicular to another ?',fontsize=10)

plt.xlim(x_min,x_max)
plt.ylim(y_min,y_max)

plt.axvline(x=4.0,color='gray',linestyle='--')
plt.quiver([0.0,0.0],[intercept,intercept],[4.0,4.0],[slope * 4.0, slope_p * 4.0], angles='xy', scale_units='xy', scale=1)

plt.text(0.5,4.25, 'A', fontsize=14)
plt.text(3.0,-5.5, 'B', fontsize=14)
plt.text(4.5,7.55, 'C', fontsize=14)

plt.savefig("perpendicular_line_02.png",bbox_inches='tight')
Image

of