Conversion coordonnées point en pixels [Résolu]

gabule 50 Messages postés mercredi 18 mai 2005Date d'inscription 24 avril 2008 Dernière intervention - 3 mai 2006 à 09:48 - Dernière réponse : gabule 50 Messages postés mercredi 18 mai 2005Date d'inscription 24 avril 2008 Dernière intervention
- 3 mai 2006 à 10:48
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
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
gabule 50 Messages postés mercredi 18 mai 2005Date d'inscription 24 avril 2008 Dernière intervention - 3 mai 2006 à 10:48
3
Merci
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

Merci gabule 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de gabule

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.