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 :

Création de carte avec Delphi


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Par défaut Création de carte avec Delphi
    Salut tout le monde,

    j'essaie de programmer un logiciel qui va pouvoir produire une carte à partir de certaines donnés que je lui donne.

    Mais voilà où je suis coincé, j'ai une Timage blanche avec quelques pixels coloriés dessus. Mon but serait de créé des secteurs à partir de ces pixels.

    j'essaie pour le moment de relier chaque pixel colorié au pixel qui lui est le plus proche afin que des zones se découpe. Malgré mes nombreuses tentative avec l'aide du théorème de pithagorre, c'est sans succès.

    Si quelqu'un aurait une idée, ce serait très apprécié!

    MERCI!

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Par défaut
    Je ne comprends pas bien à quel niveau tu bloques.
    - sur la façon de dessiner sur la TImage
    - ou sur l'algorythme

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Par défaut
    sur l'agorithme,

    Je ne suis pas capable d'identifier le pixel le plus proche de celui que j'évalue.....et ce n'est pas faute d'avoir essayer

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Par défaut
    Il faudrait que tu ailles faire un tour dans la section algorithme.
    Ton problème est certainement celui du voyageur de commerce, un problème vieux comme la programmation ou presque...

    Tu peux consulter également l'algo de Dijkstra:

    http://fr.wikipedia.org/wiki/Algorithme_de_Dijkstra

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Par défaut
    Ouais c'est un algo du même genre,

    MAIS je ne peux pas utiliser celui-ci, pcq'il regroupe la totalité des points dans un seul et même secteur. Moi, je doit pouvoir créer un nombre infinie de secteur.

    En gros, si quelqu'un aurait une idée pour pouvoir :

    -Prendre un point dans une tImage,
    -Trouver l'autre point le plus proche de celui-ci.
    -Dessiner une ligne du premier au deuxième point

    Si quelqu'un aurait une idéé pour une de ces étapes...

    MERCI!

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Par défaut
    je vais vous montrez ce que j'ai essayer,

    - toutes le coordonné de chaque point de couleur de la TImage sont dans deux TListbox.....une pour les coordonnées X, l'autre pour les Y

    voila le code (qui ne fonctionne pas bien entendu...)
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    procedure TForm1.Button15Click(Sender: TObject);
    var
    indx1, indx2 : integer;
    numeroitemcomparemaster, numeroitemcompareslave : integer;
    distance : integer;
    catheteX, catheteY : real;
    PlusCourteDistance : integer;
    PlusCourteDistanceX, PlusCourteDistanceY : integer;
    coorX, coorY : integer;
    begin
    numeroitemcomparemaster := 0;
     For indx1 := 1 to ListboxX.items.count do
      begin
      numeroitemcompareslave := 0;
      plusCourteDistance := 40000;
      coorX:= StrToInt(ListBoxX.items[numeroitemcomparemaster]);
      coorY:= StrToInt(ListBoxY.items[numeroitemcomparemaster]);
      For indx2 := 1 to ListboxX.items.count do
      begin
      catheteX := ( (StrToFloat(ListBoxX.Items[numeroitemcomparemaster])) -
      (StrToFloat(ListboxX.items[numeroitemcompareslave])) );
      catheteY := ( (StrToFloat(ListBoxY.Items[numeroitemcomparemaster])) -
      (StrToFloat(ListboxY.items[numeroitemcompareslave])) );
      Distance := Round(sqrt(
      (CatheteX*CatheteX)  +  (CatheteY*CatheteY)
      ));
      If (pluscourteDistance = 40000) or (Distance < pluscourtedistance) then
       begin
       PlusCourteDistance := Distance;
       PlusCourteDistanceX := StrToInt(ListboxX.Items[numeroitemcompareslave]);
       PlusCourteDistanceY := StrToInt(ListboxY.Items[numeroitemcompareslave]);
       end;
      numeroitemcompareslave := numeroitemcompareslave + 1;
      end;
      //dessin des lignes
      Form2.Image2.Canvas.Brush.color := clred;
      Form2.Image2.Canvas.MoveTo(coorX, coorY);
      Form2.Image2.Canvas.LineTo(PlusCourteDistanceX, PlusCourteDistanceY);
      //fin
      numeroitemcomparemaster := numeroitemcomparemaster + 1;
      end;
    end;

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 207
    Par défaut
    Pour répondre en vrac:

    -Prendre un point dans une tImage

    Ca ne semble pas compliqué, encore faut-il savoir ce que tu entends exactement par "prendre un point dans une TImage"

    -Trouver l'autre point le plus proche de celui-ci

    Je pense qu'avec les calculs vectoriels, tu devrais t'en sortir assez facilement

    -Dessiner une ligne du premier au deuxième point

    En utilisant le Canvas du TImage, c'est assez simple également


    Pour tout ce qui est manipulation d'image, je te conseille de passer par un tableau que directement par ton composant image, tu gagneras en temps de traitement

Discussions similaires

  1. Lecture d'une carte à puce
    Par info007 dans le forum Débuter
    Réponses: 14
    Dernier message: 11/01/2020, 09h30
  2. Création de cartes avec des objets associés
    Par Xupinet dans le forum IGN API Géoportail
    Réponses: 1
    Dernier message: 15/01/2013, 17h05
  3. création de procédure avec delphi
    Par ninita dans le forum Débuter
    Réponses: 6
    Dernier message: 31/08/2009, 09h54
  4. création d'une carte avec navigation du type mappy
    Par BernardT dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 30/10/2005, 01h24
  5. Connection ou création d'une base interbase avec Delphi
    Par vincentj dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/01/2005, 10h59

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