Bonjour!
J'ai fais une application en java qui utilise un GPS et qui doit détecter le passage du GPS dans une zone géographique bien précise.
Les points relevés sont en Degré décimaux. Je travaille sur des petites distances et je néglige le fait que la terre soit ronde
Pour l'instant la détection du passage dans la zone est simple. Je défini le centre de ma zone de détection avec un point "C" en degré et un rayon de détection en mètre "r".
Je calcul pour chaque position du GPS la distance en mètre entre le point ou je me trouve "P" et "C". Et si "PC" < "r" alors je suis dans la zone de détection.
Pour le calcul de la distance entre deux points j'utilise cette formule qui fonctionne à merveille avec des coordonnées sur le globe terrestre :
d=2*asin(sqrt((sin((lat1-lat2)/2))^2 + cos(lat1)*cos(lat2)*(sin((lon1- lon2)/2))^2))
Je voudrais améliorer cette fonction qui ne marche pas à tous les coups en prenant non pas uniquement les points que je relève mais aussi le tracé du déplacement. Par exemple je relève deux points GPS A et B à temps t1 et t2. A et B ne son pas dans la zone de détection mais pour autant le segment AB à traversé la zone de détection...
J'ai trouvé une méthode que je n'arrive pas à mettre en pratique :
En prenant :
C le centre de mon cercle de détection dont je connais les coordonnées en degrés décimaux
r le rayon de la zone de détection en mètres
A et B les deux points de déplacement à t1 et t2 dont je connais les coordonnées en degrés décimaux
Je place le point "I" sur le segment AB qui donne IC perpendiculaires avec AB.
Je calcul la distance IC en mètres
Si IC < r alors ma droite AB traverse le cercle C
Dans ce cas je détermine si C est entre A et B. Si oui il y a bien eu collision entre le cercle et le segment AB.
Donc déjà pensez-vous que cette méthode soit adaptée ?
j'aurai besoin d'un coup de main pour calculer IC en mètres. Quelle théorème utiliser? Comment trouver les coordonnées de "I"
J'ai trouvé ce site qui traite bien le problème mais je n'arrive pas à l'appliquer car dans son cas les coordonnées de ses points sont dans la même unité de mesure que le rayon de son cercle. Si je veux l'utiliser tel quel je dois convertir des degrés décimaux en mètres et ça devient vite n'importe quoi lorsqu'on s'éloigne de l'équateur...
Voila merci d'avoir pris le temps de me lire. En espérant avoir été clair
-----