Produit scalaire d'un vecteur par lui-même
Sachant que
Le produit scalaire est symétrique
Sachant que
Dans un repère orthonormé, où les coordonnées
En utilisant le fait que
Supposons qu'un hyperplan soit défini par un point
Exercice comment tester si
On suppose que l'on connaît les coordonnées de
On peut simplement regarder le signe du produit scalaire:
Exercice Application, avec:
Le point
Une droite passe par un point
Exercice comment trouver le point
On suppose que l'on connaît les coordonnées de
On peut remarquer que la distance indiquée sur la figure:
On a donc
Exercice quelle est la norme d'un vecteur
On suppose que l'on connaît les coordonnées de
Puisque
En 2D:
En 3D:
Exercice comment trouver l'angle
On suppose que l'on connaît les coordonnées de
Puisque le produit scalaire est, par définition:
Alors:
Nous savons maintenant trouver l'angle entre deux vecteurs, y compris en 3D!
On approxime la Terre par une sphère de rayon
Les coordonnées d'une ville peuvent être décrite par la longitude
Exercice Soit deux villes
Comment calculer la distance entre ces deux villes?
Indications:
On pourra s'aider des vues en tranche suivantes:
On peut remarquer que:
Et donc:
Nous pouvons alors utiliser:
Pour trouver l'angle entre les deux vecteurs
Enfin, la distance entre les deux villes est, par définition des radians:
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