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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212
| import java.applet.*; // ou import java.applet.*; nécessaire pour accéder à toutes les particularités des applets
import java.awt.*; // ou import java.awt.*; nécessaire pour utiliser les fonctions graphiques de base
import java.io.*;
import java.net.*;
public class tracagecourbemoi extends Applet {
Double echellex;
Double echelley;
int MargeGauche;
int MargeDroite;
int MargeHaut;
int MargeBas;
Double xmin = -10.0;
Double xmax = 10.0;
Double ymin = -10.0;
Double ymax = 10.0;
String[] lignes = new String[2000];
String fichier;
Integer nbpoints;
Double valeurpas;
Double gradmin;
Double gradmax;
Double pasideal;
Double valeurpasy;
Double gradminy;
Double gradmaxy;
Double pasidealy;
public void start() {
// 1) Construire et paramétrer labels (zones de texte sous forme de classes Label)
Label titre = new Label("Graphe de Romain & Donovan", Label.CENTER);
titre.setBackground(Color.green);
titre.setForeground(Color.red);
//Label unitX = new Label("°C");
//Label unitY = new Label();
//unitY.setText("s");
// 2) Ajouter les objets Label créés dans la liste
add(titre);
//add(unitX);
//add(unitY);
// 3) Désactiver le positionnement automatique de chaque composant
//setLayout(null);
// 4) Positionner dans ce cas, individuellement, ces objets (x, y, h ,l)
titre.setBounds(10,10,getWidth()-20,20);
//unitX.setBounds(25,25,30,30);
fichier =getCodeBase().toString()+"courbe.csv";
nbpoints = lectureDunFichierTexteAuFormatCSV(fichier, lignes);
// int zone = getWidth()*0.9;
echellex= (getWidth()*0.9/(xmax-xmin));
echelley= (getHeight()*0.9/(ymax-ymin));
MargeGauche=(int)(0.05*getWidth());
MargeDroite=(int)(0.95*getWidth());
MargeHaut=(int)(0.05*getHeight());
MargeBas=(int)(0.95*getHeight());
// Calcul du pas (fonctionnel)
Double pasideal=((xmax-xmin)/10);
Double valeurpas=Math.pow(10,Math.floor((Math.log10(pasideal))))*(Math.round((pasideal/Math.pow(10,Math.floor(Math.log10(pasideal))))));
// Arrondi de la graduation minimale
Double gradmin= (valeurpas*(Math.floor(xmin/valeurpas)));
// Arrondi de la graduation maximale
Double gradmax= (valeurpas*(Math.floor(xmax/valeurpas)));
} // fin de init
//
//
//
//
//
//
public int lectureDunFichierTexteAuFormatCSV(String nomDuFichierCSV, String[] lesLignesLues) {
BufferedReader fichierTexteCSV = null;
Integer nombreDeLignesDeTexte = 0;
URL urlDuFichierCSV = null;
try {
urlDuFichierCSV = new URL(nomDuFichierCSV);
fichierTexteCSV = new BufferedReader(new InputStreamReader(urlDuFichierCSV.openStream()));
String entete = fichierTexteCSV.readLine(); // Pour récupérer cet entête, le déclarer plutôt en variable globale !
while ((lesLignesLues[nombreDeLignesDeTexte] = fichierTexteCSV.readLine()) != null) nombreDeLignesDeTexte++;
fichierTexteCSV.close();
} catch (Exception e) {return -1;}
return nombreDeLignesDeTexte;
}
public void paint(Graphics g) { // Méthode appellée à tout moment au moindre changement
// Dessine un cadre, de 1 pixel d'épaisseur, au bord de la zone d'affichage de l'applet.
g.drawRect(0, 0, getWidth()-1, getHeight()-1);
//g.drawString(nbpoints.toString(),200,200); // Dessine le nombre de point présents dans le CSV.
//Tracage de l'axe des ordonnées - //Tracage de l'axe des ordonnées -//Tracage de l'axe des ordonnées -//Tracage de l'axe des ordonnées
Integer xpix =(int) (((-xmin)*echellex)+MargeGauche);
if (xmin>0) xpix=MargeGauche;
if (xmax<0) xpix=MargeDroite;
int xpixelminordonne = xpix;
int ypixelminordonne = (int) (Math.round(0.05*getHeight()));
int ypixelmaxordonne = (int) (Math.round(0.95*getHeight()));
int xpixelmaxordonne = xpix;
//Tracage de l'axe des abscisses - //Tracage de l'axe des abscisses -//Tracage de l'axe des abscisses -//Tracage de l'axe des abscisses -
Integer ypix = (int) (((-ymin)*echelley)+MargeHaut);
if (ymin>0) ypix=MargeBas;
if (ymax<0) ypix=MargeHaut;
int xpixelminabscisse = (int) (Math.round(0.05*getWidth()));
int ypixelminabscisse = ypix;
int ypixelmaxabscisse = ypix;
int xpixelmaxabscisse = (int)(Math.round(0.95*getWidth()));
// Tracage de la flèche sur l'axe des abscisses - Tracage de la flèche sur l'axe des abscisses - Tracage de la flèche sur l'axe des abscisses -
int LongueurAxeX=(int)(0.95*getWidth());
int[]tabxabscisse = new int[]{LongueurAxeX,LongueurAxeX+5,LongueurAxeX};
int[]tabyabscisse = new int[]{ypix+2,ypix,ypix-2};
// Tracage de la flèche sur l'axe des ordonnées - // Tracage de la flèche sur l'axe des ordonnées -// Tracage de la flèche sur l'axe des ordonnées -
int LongueurAxeY=(int)(0.05*getHeight());
int[]tabxordonnee = new int[]{xpix,xpix-2,xpix+2};
int[]tabyordonnee = new int[]{LongueurAxeY-5,LongueurAxeY,LongueurAxeY};
//Tracage de l'axe des abscisses - //Tracage de l'axe des abscisses -//Tracage de l'axe des abscisses -//Tracage de l'axe des abscisses -
//g.drawString(ypix.toString(),100,100); //Pour afficher la valeur xpix à l'écran
g.drawLine(xpixelminordonne, ypixelminordonne, xpixelmaxordonne, ypixelmaxordonne);
//Tracage de l'axe des abscisses - //Tracage de l'axe des abscisses -//Tracage de l'axe des abscisses -//Tracage de l'axe des abscisses -
//g.drawString(ypix.toString(),100,100); // Pour afficher la valeur ypix à l'écran
g.drawLine(xpixelminabscisse, ypixelminabscisse, xpixelmaxabscisse, ypixelmaxabscisse);
//Dessiner la flèche axe des abscisses et la colorier.
g.drawPolygon(tabxabscisse,tabyabscisse,3);
g.fillPolygon(tabxabscisse,tabyabscisse,3);
//Dessiner la flèche axe des ordonnées et la colorier.
g.drawPolygon(tabxordonnee,tabyordonnee,3);
g.fillPolygon(tabxordonnee,tabyordonnee,3);
//Graduation (beta)
// Calculs pour Graduation en x :
// Calcul du pas (fonctionnel)
Double pasideal=((xmax-xmin)/10);
Double valeurpas=Math.pow(10,Math.floor((Math.log10(pasideal))))*(Math.round((pasideal/Math.pow(10,Math.floor(Math.log10(pasideal))))));
//g.drawString(valeurpas.toString(),100,100);
// Arrondi de la graduation minimale
Double gradmin= (valeurpas*(Math.floor(xmin/valeurpas)));
//g.drawString(gradmin.toString(),200,100);
// Arrondi de la graduation maximale
Double gradmax= (valeurpas*(Math.floor(xmax/valeurpas)));
//g.drawString(gradmax.toString(),300,100);
///////////////////////////////////////////////////////////////////
Integer nbintervals= (int)((gradmax-gradmin)/valeurpas);
//g.drawString(nbintervals.toString(),400,200);
Integer ratio=(int)((xpixelmaxabscisse-xpixelminabscisse)/(gradmax-gradmin));
//g.drawString(ratio.toString(),400,300);
//Integer X0= (int)(-gradmin*ratio);
Integer Dneg=(int)(gradmin/valeurpas);
Integer Dpos= (int) (gradmax/valeurpas);
int xref;
for (int i=Dneg;i<Dpos;i++) {
xref=(int)(i*valeurpas*ratio+xpix);
g.drawLine(xref, 290, xref, 310);
g.setColor(Color.red);
// tu traces ton petit trais à x pixels de la gauche
}
// Calculs pour Graduation en y :
// Calcul du pas (fonctionnel)
Double pasidealy=((ymax-ymin)/10);
Double valeurpasy=Math.pow(10,Math.floor((Math.log10(pasidealy))))*(Math.round((pasidealy/Math.pow(10,Math.floor(Math.log10(pasidealy))))));
//g.drawString(valeurpasy.toString(),100,100);
// Arrondi de la graduation minimale
Double gradminy= (valeurpasy*(Math.floor(ymin/valeurpasy)));
//g.drawString(gradminy.toString(),200,100);
// Arrondi de la graduation maximale
Double gradmaxy= (valeurpasy*(Math.floor(ymax/valeurpasy)));
//g.drawString(gradmaxy.toString(),300,100);
///////////////////////////////////////////////////////////////////
Integer nbintervalsy= (int)((gradmaxy-gradminy)/valeurpasy);
//g.drawString(nbintervalsy.toString(),400,200);
Integer ratioy=(int)((ypixelmaxordonne-ypixelminordonne)/(gradmaxy-gradminy));
//g.drawString(ratioy.toString(),400,300);
//Integer X0= (int)(-gradmin*ratio);
Integer Dnegy=(int)(gradminy/valeurpasy);
Integer Dposy= (int) (gradmaxy/valeurpasy);
int yref;
for (int a=Dnegy;a<Dposy;a++) {
yref=(int)(a*valeurpas*ratio+ypix);
g.drawLine(440, yref, 460, yref);
g.setColor(Color.blue);
// tu traces ton petit trais à y pixels de la gauche
}
}
// fin de paint
} // Fin de l'applet |
Partager