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

Caml Discussion :

Probleme d'affichage [Module Graphics]


Sujet :

Caml

  1. #1
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 146
    Points : 81
    Points
    81
    Par défaut Probleme d'affichage [Module Graphics]
    Bonjour à tous,

    Je ne comprends pas pourquoi mon code ne dessine pas dans la fenetre (qui s'ouvre normalement). Je sais où est l'erreur mais je ne comprends pas pourquoi et comment le régler...

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    (* declare les types *)
    
    type data =   Node of node  | Bounds of bounds | Ways of ways 
    and bounds = {minlat : float; minlon : float; maxlat : float; maxlon : float}
    and node = {id : int; lat : float; lon : float}
    and ways = {idw: int; nd: int list; tags: (string*string) list}
    
    
    ...
    (* data contient une liste de type data, je vous épargne tous ce code qui lui marche *) 
    let data= extract "01_denver_lafayette.osm";;
    
    (*a partir de data on refait des sous listes avec tous les sous types node et ways *)
    let list_nodes = get_list_nodes data;;
    
    let list_ways = get_list_ways data;;
    
    
    
    (* a partir d une reference, obtient la latitude et la longitude et dessine 
    a partir du point courant au coord de la reference *)
    let draw_ref i = let x = ref_to_lat list_nodes i in 
    		 let y = ref_to_lon list_nodes i in
    		 Graphics.lineto (lat_to_coordo x) (lon_to_coordo y)
    ;; 
    
    
    (* prend une int list l avec des reference aux nodes 
       et dessine les differents points   
       attention avant de draw_points, bien positionner le curseur *)
    
    let rec draw_points l = match l with
      |[] -> ()
      |hd::tail -> draw_ref hd; 
        draw_points tail
    ;;
    (*prend une reference de noeud et deplace vers la coordonnee du noeud  *)
    let move_cursor nd = let x = ref_to_lat list_nodes nd in
    		     let y = ref_to_lon list_nodes nd in
    		     Graphics.moveto (lat_to_coordo x) (lon_to_coordo y)
    ;;
    (* draw_ways prend une liste de ways et renvoie *)
    
    
    (* L'erreur semblerait etre dans cette fonction *)
    let rec draw_ways l = match l with 
      | [] -> ()
      | w::tail -> move_cursor (List.hd (w.nd)); 
        Graphics.set_color Graphics.red;
        Graphics.set_line_width 50;
        draw_points w.nd;
        draw_ways tail
    ;;
    
    
    let size = " "^(string_of_int(longueur))^"x"^(string_of_int(largeur));;
    Graphics.open_graph size;;
    Graphics.lineto 10 100;;
    
    (* Graphics.close_graph ;;*)
    
    draw_ways list_ways;;
    
    
    (* je pense avoir mis tout les code essentiel car c'est assez long donc je voulais vous épargné le maximum *)

    Merci d'avance !

  2. #2
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonjour,

    Quelques idées en vrac :

    • Il faut essayer de dissocier au maximum les calculs et le graphisme (idéalement dans des fichiers distincts).
    • Est-ce que tes fonctions de conversion de latitude/longitude vers des coordonnées cartésiennes sont correctes ?
    • Tes fonction draw_points et draw_ways sont des List.iter qui n'avouent pas leur nom.
    • Toute la partie avec open_graph devrait être incluse dans un let () = ...

    En l'état actuel, c'est un peu difficile de déboguer le code. Tu peux aussi nous donner tout le listing pour qu'on essaie de le compiler et de le faire fonctionner...

    Cordialement,
    Cacophrène

  3. #3
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 146
    Points : 81
    Points
    81
    Par défaut
    J'ai tout laissé à la fac... Je reviens vers toi dès que j'ai du concret.

    En tout cas, saches que toi et gasche êtes vraiment sympa de mettre vos connaissances à notre disposition... nous les jeunes.

    Et merci

Discussions similaires

  1. Probleme affichage avec graphics
    Par olibara dans le forum C#
    Réponses: 0
    Dernier message: 12/03/2009, 08h52
  2. xml-xsl-fo : probleme d'affichage d'un tableau
    Par clindoeil dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 12/12/2003, 12h46
  3. [langage] Problème d'affichage
    Par marcoss dans le forum Langage
    Réponses: 3
    Dernier message: 29/08/2003, 13h05
  4. IE [Applet] Plug-in problème d'affichage
    Par Tonton Luc dans le forum JBuilder
    Réponses: 4
    Dernier message: 19/06/2003, 08h28

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