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

Mathématiques Discussion :

Adapter des cordonnées (longitude/latitude) aux dimensions d'une fenêtre


Sujet :

Mathématiques

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 83
    Points : 68
    Points
    68
    Par défaut Adapter des cordonnées (longitude/latitude) aux dimensions d'une fenêtre
    Bonjour,

    Je cherche à adapter un ensemble de cordonnées (longitude/latitude) ou de point (x, y) aux dimensions d'une fenêtre.

    Voici un exemple fictif : je connais pour mes ensemble de points mon Xmax, Ymax, Xmin et Ymin. Je connais aussi les dimensions de ma fenêtre d'application, par exemple 400 de largeur et 400 de hauteur

    Ainsi (Xmax, Ymax) devrai être converti en (400, 400) et (Xmin, Ymin) en (0, 0).

    J'ai beau me triturer les méninges, je ne vois pas comment produire un algorithme me permettant de faire cette conversion.

  2. #2
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonjour,

    Il faut faire des dessins pour ce type de problème. Avec X de l'image vers la droite et Y vers le bas (simple intuition), ça donne quelque chose du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    xImage = 400*( x - xMin ) / ( xMax - xMin )
    yImage = 400*( yMax - y ) / ( yMax - yMin )
    PS: il est plus souvent pratique de paramétrer le centre de la carte et un facteur d'échelle pour éviter par construction d'avoir des résolutions différentes en x et en y.

  3. #3
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    J'ajouterais qu'il y a 2 transformations successives à appliquer :

    • La transformation lat/lon en x/y (coordonnées rectangulaires "absolues" en mètres. dépend de la projection utilisée (du type de projection, du centre, de l'orientation) )

    • La transformation x/y mètres (équations de projection) x/y écran (facteur d'échelle et centrage)

  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut
    bonjour

    Plus precisement pour avoir des coords Y vers le haut....
    Code : 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
     
     //dimensions maximales de ton "viewport" en coords.universelles(reelles)...
            private float xMin = 0.0f;
            private float xMax = 10.0f;
            private float yMin = 0.0f;
            private float yMax = 10.0f;
            private Form fenetre = new Form();
     
            //Factorization des coords x,y reelles...
    private float XNormalize(float x)
            {
                float result = (x - xMin) *
                fenetre.Width / (xMax - xMin);
                return result;
            }
            //plus precisement pour avoir des coords Y vers le haut....
            private float YNormalize(float y)
            {
                float result = fenetre.Height - (y - yMin) *
               fenetre.Height / (yMax - yMin);
                return result;
            }
    bon code...

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 83
    Points : 68
    Points
    68
    Par défaut
    Merci pour cette démonstration

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/12/2009, 22h21
  2. Problème avec la dimension d'une fenêtre
    Par sfpx dans le forum Delphi
    Réponses: 2
    Dernier message: 01/05/2007, 18h39
  3. prendre les dimensions d'une fenêtre
    Par ben_iap dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 07/12/2005, 13h12
  4. Réponses: 2
    Dernier message: 25/08/2005, 05h44

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