Repères et coordonnées

Produit scalaire

Grégoire Passault
Repères et coordonnées

Définition

Le produit scalaire associe à deux vecteurs et un nombre, noté , ayant pour valeur:

est l'angle entre et

Grégoire Passault
Repères et coordonnées

Propriétés

Produit scalaire d'un vecteur par lui-même

Sachant que , alors

Le produit scalaire est symétrique

Sachant que ,

Le produit scalaire est compatible avec l'addition

Pour plus de détails: bilinéarité

Grégoire Passault
Repères et coordonnées

Dans un repère orthonormé

Dans un repère orthonormé, où les coordonnées sont et les coordonnées sont :

Qui se distribue en:

Grégoire Passault
Repères et coordonnées

Dans un repère orthonormé (2)

En utilisant le fait que et , et que , on obtient:

Le même raisonnement fonctionne en 3D
Grégoire Passault
Repères et coordonnées

Tester de quel côté d'un hyperplan est un point

Supposons qu'un hyperplan soit défini par un point et une normale .

⚙️ Exercice comment tester si est d'un côté (vert) ou de l'autre (rouge) ?

On suppose que l'on connaît les coordonnées de , et .

Grégoire Passault
Repères et coordonnées

Tester de quel côté d'un hyperplan est un point

On peut simplement regarder le signe du produit scalaire:

Grégoire Passault
Repères et coordonnées

Tester de quel côté d'un hyperplan est un point

⚙️ Exercice Application, avec:


est-il du côté vert ou rouge?

Le point est donc du côté rouge.

Grégoire Passault
Repères et coordonnées

Projeter un point sur une droite

Une droite passe par un point et se dirige dans la direction du vecteur unitaire

⚙️ Exercice comment trouver le point , projeté de sur la droite?

On suppose que l'on connaît les coordonnées de , et .

Grégoire Passault
Repères et coordonnées

Projeter un point sur une droite

On peut remarquer que la distance indiquée sur la figure: est égale , car

On a donc

Grégoire Passault
Repères et coordonnées

Norme d'un vecteur

⚙️ Exercice quelle est la norme d'un vecteur ?

On suppose que l'on connaît les coordonnées de

Grégoire Passault
Repères et coordonnées

Norme d'un vecteur

Puisque , alors:


En 2D:

En 3D:

Grégoire Passault
Repères et coordonnées

Angle entre deux vecteurs

⚙️ Exercice comment trouver l'angle entre deux vecteurs et ?

On suppose que l'on connaît les coordonnées de et de

Grégoire Passault
Repères et coordonnées

Angle entre deux vecteurs

Puisque le produit scalaire est, par définition:

Alors:

Nous savons maintenant trouver l'angle entre deux vecteurs, y compris en 3D!

Grégoire Passault
Repères et coordonnées

Distance entre deux villes

On approxime la Terre par une sphère de rayon . On attache un repère au centre.

Les coordonnées d'une ville peuvent être décrite par la longitude et la latitude .

⚙️ Exercice Soit deux villes et de coordonnées et .
Comment calculer la distance entre ces deux villes?

Grégoire Passault
Repères et coordonnées

Distance entre deux villes

Indications:

  • Exprimer les coordonnées des villes en coordonnées cartésiennes.
  • Calculer l'angle entre les deux vecteurs et
  • En déduire la distance
Grégoire Passault
Repères et coordonnées

Distance entre deux villes

On pourra s'aider des vues en tranche suivantes:

Grégoire Passault
Repères et coordonnées

Distance entre deux villes

On peut remarquer que:


Et donc:


Grégoire Passault
Repères et coordonnées

Distance entre deux villes

Nous pouvons alors utiliser:

Pour trouver l'angle entre les deux vecteurs et .

Grégoire Passault
Repères et coordonnées

Distance entre deux villes

Enfin, la distance entre les deux villes est, par définition des radians:

Grégoire Passault
Repères et coordonnées

Distance entre deux villes

import numpy as np

r = 6371 # Rayon de la terre [km]

def longlat_to_xyz(long, lat):
    l = r*np.cos(lat)
    return l*np.cos(long),  l*np.sin(long),  r*np.sin(lat)

def distance_villes(long1, lat1, long2, lat2):
    x1, y1, z1 = longlat_to_xyz(long1, lat1)
    x2, y2, z2 = longlat_to_xyz(long2, lat2)
    dot_product = (x1*x2 + y1*y2 + z1*z2)
    angle = np.arccos(dot_product / (r**2))
    return angle * r

bordeaux = (np.deg2rad(-0.57918), np.deg2rad(44.837789))
new_york = (np.deg2rad(-74.006), np.deg2rad(40.7128))
print(distance_villes(*bordeaux, *new_york))
# 5801.7705

Grégoire Passault