Conversion coordonnées point en pixels

[Résolu]
Signaler
Messages postés
50
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
24 avril 2008
-
Messages postés
50
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
24 avril 2008
-
Bonjour tout le monde.
Je dois tracer un graphet le je bloque : en effet j'ai la valeur du x, la valeur du y et je dois tracer les point mais ca merde.Je recupere les points ds un fichier txt et je les trace un a un (je ne peux pas les stocker car appi avec des milliers de points plus tard).
G une marge de 40pixels a droite et de 60 pixels en haut. L'axe des x fait 1000 pixels (moins les 40 de marge)
et celui des y fait 300 (360 - 60 de marge).Je pense que j'ai un bleme avec les y negatifs car avec les x ca marche ( la coube s'affiche mais les valeursde y sont pas bonne il me semble que ca me fait une symetrie ( les y -y et -y y)
HELP SVP
bout de code correspondant :

while(fluxEntree.ready())
      {
          ligne            = fluxEntree.readLine();
          indiceSeparateur = ligne.indexOf(";");
          valx          = new String(ligne.substring(0,indiceSeparateur));
          valy          = new String(ligne.substring(indiceSeparateur+1,ligne.length()));
          //on cree les double pour pouvoir comparer les valeurs
          valxf = Double.parseDouble( valx ) ;
          rapportx = (valxf-minx)/ecartx;
          valyf = Double.parseDouble( valy ) ;
        rapporty = (valyf-miny)/ecarty;
System.out.println("valeur de y : " + valyf);
          valxf = (1000-40)*rapportx;
          valyf = (360-60) * rapporty;
          //les transformer en int pour pouvoir les tracer
          int valxint=(int)valxf;
          int valyint=(int)valyf;
          if(nbreDeLigne==1)
        {
             
              ancienX = valxint;
              ancienY = valyint;
              nbreDeLigne ++;

        }    //fin du If sur i
          if(nbreDeLigne!=1)
        {
             
              //On trace la ligne correspondante correspondant en indiquant la valeur
              g.setColor(Color.red);
              //la valeur + la marge
              g.drawLine(40+ancienX,60+ancienY,40+valxint,60+valyint);
              ancienX = valxint;
              ancienY = valyint;
              nbreDeLigne ++ ;
              g.setColor(Color.black);
           
            
        }
       
      }

 RoXXe

1 réponse

Messages postés
50
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
24 avril 2008

lol c bon g trouvé : c parce que il me faisait l'inverse pour les y : les negatifs etaient en haut en les positifs en bas !
Voici le bon code :

// tracage des points
   

    try
    {
    showStatus("Tracage du graphique");   
//    creation des flux de fichier entrants
    source       = getParameter("source");
    url          = new URL(getCodeBase(),"pib7801;.txt");
    urlConnexion = url.openConnection();
    entree       = urlConnexion.getInputStream();
    fluxEntree   = new BufferedReader(new InputStreamReader(entree));

//    Lecture du fichier
   
    nbreDeLigne = 1;
    int ancienX = 0;
    int ancienY = 0;
    double ecarty;
    double ecartx;
    ecartx = maxx-minx;
    ecarty = maxy-miny;
    double rapporty ;
    double rapportx ;

    while(fluxEntree.ready())
      {
          ligne            = fluxEntree.readLine();
          indiceSeparateur = ligne.indexOf(";");
          valx          = new String(ligne.substring(0,indiceSeparateur));
          System.out.println("valeur de x : " + valx);
          valy          = new String(ligne.substring(indiceSeparateur+1,ligne.length()));
          //on cree les double pour pouvoir comparer les valeurs
          valxf = Double.parseDouble( valx ) ;
          rapportx = (valxf-minx)/ecartx;
          valyf = Double.parseDouble( valy ) ;
        rapporty = (valyf-miny)/ecarty;
          valxf = (1000-40)*rapportx;
          valyf = 300-((360-60)*rapporty);
          //les transformer en int pour pouvoir les tracer
          int valxint=(int)valxf;
          int valyint=(int)valyf;
          if(nbreDeLigne==1)
        {
             
              ancienX = valxint;
              ancienY = valyint;
              nbreDeLigne ++;

        }    //fin du If sur i
          if(nbreDeLigne!=1)
        {
             
              //On trace la ligne correspondante correspondant en indiquant la valeur
              g.setColor(Color.red);
              //la valeur + la marge
              g.drawLine(40+ancienX,60+ancienY,40+valxint,60+valyint);
              //pour mettre des petits points
              //g.fillOval(40+valxint,60+valyint,5,5);
              ancienX = valxint;
              ancienY = valyint;
              nbreDeLigne ++ ;
              g.setColor(Color.black);
           
            
        }
       
      }

//    Fermeture du fichier
    fluxEntree.close();

//    si problèmes de lecture du fichier
    } catch (FileNotFoundException fnfe) {
         System.out.println("fichier non trouvé");
       }
       catch (IOException ioe) {
         System.out.println("erreur d'E/S " + ioe.getMessage());
       }

 RoXXe