IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Détecter si deux trajets se croisent


Sujet :

Algorithmes et structures de données

  1. #21
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par wiwaxia Voir le message
    C'est une solution graphique, radicale par le changement de variable qu'elle implique, et bien adaptée si l'on s'en tient à vérifier l'existence du point d'intersection, comme le suggère avigeilpro ... Mais elle demande l'intervention d'un logiciel assurant le calcul et le tracé des deux géodésiques, tâche déjà lourde à laquelle s'ajoutera éventuellement la représentation de la carte géographique sous-jacente ... Je me demande dans ces conditions si cela ne sera pas trop lourd en temps de calcul et volume de mémoire pour le petit appareil sur lequel il est prévu d'installer le programme ...
    Bah une fonction du style :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    static int LambertConformalConic_Sphere_Geo_to_Rect(
    double   radius, 
    double   lat_1,
    double   lat_2,
    double   lat_0,
    double   long_0,
    double   latitude,
    double   longitude,
    double   *x,
    double   *y,
    double   *h_scale,
    double   *k_scale)
    {
        double  
    	delta_long,
    	Ro,Ro_0,
    	Theta,
    	F,n,
          tmp,
            Lat1, Lat2, Lat0,Long0,Lat,Long;
     
        Long0 = long_0 ;
        Lat0 = lat_0 ;
        Lat1 = lat_1 ;
        Lat2 = lat_2 ;
        Lat = latitude ;
        Long = longitude ;
     
        validate_longitude(&Long0);
        validate_longitude(&Long);
        validate_latitude(&Lat);
        validate_latitude(&Lat0);
        validate_latitude(&Lat1);
        validate_latitude(&Lat2);
     
        delta_long = Long - Long0;
     
        Long0     *= DEGREE_TO_RADIAN;
        Lat0      *= DEGREE_TO_RADIAN;
        Lat1      *= DEGREE_TO_RADIAN;
        Lat2      *= DEGREE_TO_RADIAN;
        Long      *= DEGREE_TO_RADIAN;
        Lat   *= DEGREE_TO_RADIAN;
        delta_long *= DEGREE_TO_RADIAN;
     
     
        /* Calculate n, formula 15-3  */
     
        if ( fabs(lat_1 - lat_2) < ACCURACY_DOUBLE )
        {
        	/* Then only one standard parallel */
     
    	n = sin(Lat1);
        }
        else
        {
        	tmp = tan( PI_DIV_4 + (Lat1/2.0));
        	tmp = tan( PI_DIV_4 + (Lat2/2.0)) / tmp;
        	tmp = log(tmp);
        	n   = log(cos(Lat1) / cos(Lat2)) / tmp ;
        }
     
        tmp = tan(PI_DIV_4 + (Lat1/2.0));
        tmp = cos(Lat1) * pow(tmp,n);
        F   = tmp /  n;				/* formula 15-2  */
     
        tmp  = tan(PI_DIV_4 + (Lat0/2.0));
        Ro_0 = (radius * F) / pow(tmp , n);		/* formula 15-1a */
     
        Theta = n * delta_long;			/* formula 14-4  */			
        tmp = tan(PI_DIV_4 + (Lat / 2.0) ) ;
        Ro  = (radius * F) / pow(tmp , n);		/* formula 15-1  */
     
        *x  =  Ro * sin(Theta);			/* formula 14-1  */
        *y  =  Ro_0 - (Ro * cos(Theta)); 		/* formula 14-2  */
     
     
        tmp      =  tan(PI_DIV_4 + (Lat/2.0));
        tmp      =  cos(Lat) * pow(tmp,n);
        *h_scale =  cos(Lat1) * pow(tan(PI_DIV_4 + (Lat1/2.0)), n)/ tmp;
     
        *k_scale =  *h_scale;     			/* formula 15-4  */
     
        return NO_ERROR;
     
    }   /* end LambertConformalConic_Sphere_Geo_to_Rect */

    associée à la fonction d'intersection de Prof n'est pas franchement lourd, si ?





    PS: pour ceux intéressés, LA référence en termes de fonctions de conversion de n'importe quelle projection vers des coordonnées rectangulaires et réciproquement est :

    Reference Map Projections - A Working Manual
    U.S. Geological Survey Professional Paper 1935.


    (fournit les algos dans un sens et dans l'autre pour toutes les projections possibles et imaginables avec jeux de données de vérification)




    PPS: j'ai à dispo les fonctions directes et inverses pour stéréographique, lambert, mercator, plate carrée, et utm, aussi bien en sphérique que elliptique, si ça intéresse quelqu'un...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  2. #22
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 619
    Points : 188 594
    Points
    188 594
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    PPS: j'ai à dispo les fonctions directes et inverses pour stéréographique, lambert, mercator, plate carrée, et utm, aussi bien en sphérique que elliptique, si ça intéresse quelqu'un...
    N'hésite pas à les mettre dans l'application de téléchargements (http://algo.developpez.com/telecharger/), elles seront plus faciles à trouver .
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #23
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par dourouc05 Voir le message
    N'hésite pas à les mettre dans l'application de téléchargements (http://algo.developpez.com/telecharger/), elles seront plus faciles à trouver .
    J'hésite.... depuis quelques années....

    Je ne veux pas non plus trop faciliter la tâche de gens qui veulent du code tout fait et ne cherche pas vraiment à comprendre ou se renseigner...

    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/07/2011, 17h25
  2. Réponses: 5
    Dernier message: 13/02/2008, 10h15
  3. Détecter les lignes identiques entre deux matrices
    Par totovich dans le forum MATLAB
    Réponses: 5
    Dernier message: 17/04/2007, 09h42
  4. [Javascript] Détecter collision de deux objets <img>
    Par Invité4 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/04/2006, 08h54
  5. Réponses: 23
    Dernier message: 23/01/2006, 21h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo