Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Déplacer un point (latitude,longitude) en fonction d'une vitesse en km/h et d'un angle



  1. #1
    disident

    Question Déplacer un point (latitude,longitude) en fonction d'une vitesse en km/h et d'un angle


    ------

    Bonjour à tous,

    Je dispose : des coordonnées d'un point p (longitude et latitude ex: 37.0625, -95.677068 récupérées par google map) representant un avion, de sa vitesse (km/h) ainsi que de son angle de direction teta (0 -> 360°).

    Comment je peux déduire les nouvelles coordonnées du point après n secondes?

    Selon ce lien , voici la formule exprimant la distance entre deux points :

    d = R * (Pi/2 - ArcSin( sin(destLat) * sin(sourceLat) + cos(destLong - sourceLong) * cos(destLat) * cos(sourceLat)))
    Mais je ne vois pas comment la modifiée pour arriver à récupérer destLong et destLat.
    Si quelqu'un pouvait me rafraichir les idées la dessus ça serait pas de refus,

    Merci beaucoup,

    -----

  2. Publicité
  3. #2
    Ksilver

    Re : Déplacer un point (latitude,logitude) en fonction d'une vitesse en km/h et d'un angle

    il faudrait que tu précice ce qu'est "l'angle de direction" tu le prend par rapport à quoi ?

  4. #3
    disident

    Re : Déplacer un point (latitude,logitude) en fonction d'une vitesse en km/h et d'un angle



    voila l'angle en question Ksilver

    Le point F à pour coordonnées 27.24609 en longitude et 34.30714 en latitude, l'angle est de 31degres déterminé par atan2(pente de T)

    Es ce que je peux faire ca pour calculer l'angle? Engros est ce que ces coordonées font partie d'un plan cartésien ou sphérique?

    J'ai les coordonnées de T qui me servent uniquement à déterminer l'angle, après F bougera par sa vitesse et son angle de direction.

    Voila si t'as besoin de plus d'infos

  5. #4
    YBaCuO

    Re : Déplacer un point (latitude,longitude) en fonction d'une vitesse en km/h et d'un angle

    Bonjour,

    Je pense que le calcul de l'angle est incorrect, car tu dessines sur une projection de Mercator; les lignes droites que tu as dessinées n'en sont pas.

    Ce n'est pas flagrant ici, mais prenons l'exemple d'un vol Paris-San Francisco.
    Je suppose que tu te dis que la route la plus courte pour aller de Paris à San Francisco traverse l'Atlantique, survole les environs de New York puis traverse les USA. C'est la route loxodromique, celle qui apparait en ligne droite sur les cartes habituelles.
    Si tu as sous la main un globe terrestre, prends une ficelle et étends là en reliant les deux villes. Sinon utilise l'outil "règle" dans GoogleEarth. Tu t'apercevras que la ligne droite, celle qui relie au plus court passe par l'Angleterre, traverse le Groenland, la baie d'Hudson au Canada et atteint San Francisco par le nord. C'est la route orthodromique, la vraie ligne droite.

    Concernant les distances, a priori la formule est juste, j'ai lu une formule où l'on a simplifié le Pi/2-arcsin en arccos.

  6. A voir en vidéo sur Futura
  7. #5
    Ouk A Passi

    Re : Déplacer un point (latitude,longitude) en fonction d'une vitesse en km/h et d'un angle

    Bonjour,

    à YBaCuO pour la clarté de son explication.
    Si tu as sous la main un globe terrestre, prends une ficelle et étends là en reliant les deux villes
    C'est exactement ce que j'ai fait récemment in situ pour expliquer ce qu'était l'orthodromie.

  8. #6
    disident

    Re : Déplacer un point (latitude,longitude) en fonction d'une vitesse en km/h et d'un angle

    ok quelle méthode faut-il utiliser pour déterminer l'angle?

    pour faire avancer l'avion en fonction de l'angle et de la vitesse
    je calcule la distance parcouru = distance

    Voici le calcul de la nouvelle position qu'en pensez vous? (cela suppose que la terre est un sphere ce qui est suffisant au vu de la distance parcourue de l'ordre du cm)

    Code:
    d = distance/6378;    //distances en km
    lat = asin(sin(myplane.position.y) * 
    cos(d)+cos(myplane.position.y)*sin(d)*cos(angle));
    
    dlon = atan2(sin(angle)*sin(d)*cos(myplane.position.y), cos(d)-sin(myplane.position.y)*sin(myplane.position.y));
    
    lon = ((myplane.position.x-dlon + M_PI ) % ( 2*M_PI ) )  - M_PI;
    Merci pour les infos YBaCuO

  9. Publicité
  10. #7
    Ouk A Passi

    Re : Déplacer un point (latitude,longitude) en fonction d'une vitesse en km/h et d'un angle

    Bonjour,

    Je me permets une courte citation extraite de ce site:
    Donc, Si vous avez bien tout suivi, il ne faut pas suivre un cap fixe pour aller le plus "vite" possible d'un point à un autre :
    le cap varie lorsque l'on suit une route orthodromique, mais reste le même si on suit une route loxodromique.

  11. #8
    disident

    Re : Déplacer un point (latitude,longitude) en fonction d'une vitesse en km/h et d'un angle

    Quelqu'un peut me dire si mes formules sont corrects j'obtiens des resultats assez surprenants.

    Merci

  12. #9
    YBaCuO

    Re : Déplacer un point (latitude,longitude) en fonction d'une vitesse en km/h et d'un angle

    Peux tu expliciter tes calculs?
    Je n'arrive pas vraiment à suivre ce que tu fais.
    Que représente exactement l'angle?

  13. #10
    disident

    Re : Déplacer un point (latitude,longitude) en fonction d'une vitesse en km/h et d'un angle

    L'angle dont lequel je parle est représenté sur cette figure : http://www.monsterup.com/image.php?u...1208253141.jpg

    J'ai les coordonnées en degrée de la latitude et de la longitude de F (from) et T (To) respectivement le point de départ de l'avion et un autre point pour calculer la trajectoire de l'avion.

    L'angle dont lequel je parle est la trajectoire que prendra l'avion pour aller vers T de 0 à l'est, 90 au nord, 180 à l'ouest, 270 au sud.

    Je n'arrive pas à calculer la valeur de cet angle radian.

    Une fois que j'aurai l'angle il me faut calculer la nouvelle position de mon avion après 2 secondes pour une vitesse de 700km/h.

    distanceparcourue=700*(2/3600) km

    Je recherche donc des formules qui a partir de l'angle de trajectoire , de la position de mon avion et de la distance parcourue me donne les nouvelles coordonnées de mon avion.

    Mes calculs désolé c'est du langage c
    Code:
    d = distanceparcourue/6378;
    bearing=angle*(M_PI/180);
     
    lat = asin(sin(myplane.position.y) * cos(d)+cos(myplane.position.y)*sin(d)*cos(bearing));
    dlon = atan2(sin(bearing)*sin(d)*cos(myplane.position.y), cos(d)-sin(myplane.position.y)*sin(lat));
    lon = fmod((myplane.position.x-dlon + M_PI ) , ( 2*M_PI ))  - M_PI;
    M_PI = valeur de PI

    lat : nouvelle latitude
    lon : nouvelle longitude
    dlon : variable temporaire

    atan2: Cette fonction calcule l’arc-tangente du nombre donné en paramètre, l’angle fournit est exprimé en radian.

    myplane.position.y la latitude de l'avion avant le déplacement
    myplane.position.x la longitude de l'avion avant le déplacement

    fmod Cette fonction renvoie le reste réel de la division de x par y.


    J'ai extrait ses calculs d'une sorte de manuel de pilote d'avion mais je ne suis pas sur de leurs exactitudes.

    Merci

  14. #11
    YBaCuO

    Re : Déplacer un point (latitude,longitude) en fonction d'une vitesse en km/h et d'un angle

    Si j'ai bien compris, nous avons un avion qui va du point F au point T volant à une certaine vitesse.

    Nous voulons connaitre la distance à parcourir (je suppose au plus court donc c'est la route orthodromique).
    Nous voulons connaitre le cap que doit prendre l'avion pour suivre cette route.
    Nous réactualisons ce problème toutes les deux secondes.

    Tu sembles penser que le cap est déterminé une fois pour toute, tu n'as donc pas cerné le sens de la citation d'Ouk A Passi.
    Le cap à suivre change en permanence. Pour t'en convaincre, rentre un exemple ici:http://www.smartbooking.biz/sailing/ortho.php
    Assez paradoxalement le cap change en permanence mais l'avion va tout droit, théoriquement il n'agit pas sur ses gouvernes.

    Je note la latitude et la longitude du point F exprimée en degré.

    La distance en degré entre les points F et T est:


    En se basant sur la définition qu'un mille marin vaut une minute d'arc et un degré compte soixante minutes.
    La distance en mille marin est:

    Si les formule trigonométriques sont en radian il faudra modifier les formules en conséquence car sera exprimée en radian et non en degré.

    Le cap initial à suivre est:

    0° indique le nord, 90° l'est et 180° le sud. Ce calcul est restreint pour un route vers l'est, si la route est vers l'ouest alors il se calcul par 360°-Cap.

    Connaissant le cap, la position initiale et la vitesse, on calcul la nouvelle position après un temps en faisant l'hypothèse que l'on se déplace sur une surface plane, loin des pôles.


    Sinon j'ai une autre idée, c'est de créer un nouveau système de coordonné de façon que le point de destination soit un pôle et le méridien zero corresponde au méridien du point T, ainsi dans cette configuration le cap apparait constant toujours dirigé vers le pseudo nord, le calcul de la position à l'instant t est aussi beaucoup plus simple et le calcul de la route orthodromique est fait une seule fois et non toutes les deux secondes.
    Par contre je n'ose même pas imaginer la tête de la matrice de changement de base.

Discussions similaires

  1. latitude de mise au point d'un microscope
    Par bird12358 dans le forum Physique
    Réponses: 0
    Dernier message: 03/01/2007, 11h06
  2. convertion longitude latitude en XY 2D
    Par korntex5 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 09/09/2006, 17h45
  3. latitude-longitude
    Par gauvilinho dans le forum Physique
    Réponses: 8
    Dernier message: 06/08/2006, 10h44
  4. latitude et longitude
    Par stevegourdon dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 3
    Dernier message: 23/03/2006, 13h48