Alors là, Pollux, tu vas fâcher le physicien qui est en moi

...
Mathématiquement, en algèbre linéaire, définir un produit scalaire, c'est définir un repère du plan, c'est-à-dire une origine O et deux vecteurs directeurs normés |x> et |y> qui eux seuls définissent ce qu'est l'orthogonalité et la norme dans ce repère, puisque les seules et uniques propriétés géométriques sont : <x|x> = <y|y> = 1 et <x|y> = 0, rien de plus, rien de moins (j'utilise pour les vecteurs la
notation bra-ket si chère aux physiciens quantiques

).
L'unité de longueur, c'
EST sqrt(<x|x>) = sqrt(<y|y>).
Après, pour des raisons d'“intuition physique” et au sein d'un référentiel galiléen, on préfère avoir |x> et |y> tous deux de la “longueur” d'un même objet physique (par exemple, la “longueur” d'un bout de ficelle donné que l'on peut décider d'utiliser comme unité de longueur, le “schplounk” (imaginez que le “mètre” n'existe pas)) et définir un vecteur |y> orthogonal à |x> en faisant en sorte que l'“extrémité” de |y> soit “équidistant” (en utilisant un aut bout de ficelle) de l'“extrémité” de |x> et de celle de -|x>, ces trois vecteurs ayant leur origine au même point.
Mais ce n'est rien de plus qu'une convention pour saisir intuitivement plus facilement ce qui ce passe, les formules mathématiques du produit scalaire s'en fichent pas mal.
Et de toute façon, la relativité restreinte nous montre que ce qui est orthonormé dans un repère galiléen ne l'est pas forcément dans un autre repère galiléen en translation par rapport au premier, et pourtant la physique et les mathématiques sont toujours aussi exactes et vérifiées dans les deux cas.
Bon, reprenons.
Soit K la “projection orthogonale” de M sur (AB).
On note d0 = ||KM|| la distance de M à (AB) exprimée en “schplounk” (1 schplounk = sqrt(<x|x>) = sqrt(<y|y>), mais d0 est un scalaire, donc sans dimension) et |u'> = |KM>/||KM|| = |KM>/d0, vecteur unitaire de longueur 1 schplounk (tandis que |KM> est un vecteur de longueur d0 schplounk, ce qui montre bien que 1/d0 est sans dimension, sinon on aurait des schplounk² qui apparaîtraient), d'où |KM> = d0.|u'> = |d0.u'> et <u'|u'> = <x|x> = <y|y> = 1 schplounk².
|BM> = |BK> + |KM>, or <BK|KM> = 0 (sous-entendu : 0 schplounk²) par orthogonalité, donc <BM|u'> = <BK|KM>/d0 = (<BK|KM> + <KM|KM>)/d0 = <KM|KM>/d0 = <d0*.u'|d0.u'>/d0 = d0.<u'|u'> = d0 schplounk² (d0* est le conjugué de d0 au sens des nombres complexes, mais d0 étant ici un réel puisque la représentation d'une longueur physique, d0* = d0).
<BM|u'> est une longueur au carré (exprimée donc en schplounk²), et d0 un scalaire réel.
Dire qu'un produit scalaire peut selon les cas être une longueur ou une longueur au carré, ça va faire crisser les dents aussi bien aux matheux (ce que je ne suis pas) qu'aux physiciens (je que je suis, alors gare à tes

...).