Open MartyO256 opened 6 years ago
Les méthodes à ajuster sont dans la classe Repere
.
/**
* Calcule la position virtuelle des graduations horizontales de l'espace,
* qui correspond à des valeurs d'ordonnées de l'espace. Ces valeurs
* d'ordonnée de l'espace sont déterminées en ordre croissant à partir de la
* hauteur de leur écran d'affichage
*
* @param hauteur la hauteur virtuelle de l'espace exprimée en pixels.
* @param espacementMinimal l'espacement virtuel minimal entre chaque
* graduation.
* @return l'ensemble des valeurs d'abscisse des graduations horizontales de
* la toile.
*/
public double[] graduationsHorizontales(final double hauteur,
final double espacementMinimal) {
final double espacementMinimalReel = espacementMinimal / getEchelle()
.getY();
final int exposant = (int) (Math.log(espacementMinimalReel)
/ Math.log(PUISSANCE));
final double espacementReel = Math.pow(PUISSANCE, exposant);
final double espacementVirtuel = espacementReel * getEchelle().getY();
double ordonneeAncrage = getOrigineVirtuelle().getY()
% espacementVirtuel;
ordonneeAncrage = ordonneeAncrage > 0
? ordonneeAncrage - espacementVirtuel : ordonneeAncrage;
final double[] graduationsHorizontales = new double[(int) (hauteur
/ espacementVirtuel) + 2];
double y = ordonneeAncrage;
for (int i = 0; i < graduationsHorizontales.length; i++) {
graduationsHorizontales[i] = y;
y += espacementVirtuel;
}
for (int i = 0; i < graduationsHorizontales.length / 2; i++) {
final int indiceInverse = graduationsHorizontales.length - 1 - i;
final double temporaire = graduationsHorizontales[i];
graduationsHorizontales[i] = graduationsHorizontales[indiceInverse];
graduationsHorizontales[indiceInverse] = temporaire;
}
return graduationsHorizontales;
}
/**
* Calcule la position virtuelle des graduations verticales de l'espace, qui
* correspondent à des valeurs d'abscisses de l'espace. Ces valeurs
* d'abscisse de l'espace sont déterminées en ordre croissant à partir de la
* largeur de leur écran d'affichage.
*
* @param largeur la largeur virtuelle de l'espace exprimée en pixels.
* @param espacementMinimal l'espacement virtuel minimal entre chaque
* graduation.
* @return l'ensemble des valeurs d'ordonnée des graduations verticales de
* la toile.
*/
public double[] graduationsVerticales(final double largeur,
final double espacementMinimal) {
final double espacementMinimalReel = espacementMinimal / getEchelle()
.getX();
final int exposant = (int) (Math.log(espacementMinimalReel)
/ Math.log(PUISSANCE));
final double espacementReel = Math.pow(PUISSANCE, exposant);
final double espacementVirtuel = espacementReel * getEchelle().getX();
double abscisseAncrage = getOrigineVirtuelle().getX()
% espacementVirtuel;
abscisseAncrage = abscisseAncrage > 0
? abscisseAncrage - espacementVirtuel : abscisseAncrage;
final double[] graduationsVerticales = new double[(int) (largeur
/ espacementVirtuel) + 2];
double x = abscisseAncrage;
for (int i = 0; i < graduationsVerticales.length; i++) {
graduationsVerticales[i] = x;
x += espacementVirtuel;
}
return graduationsVerticales;
}
Les graduations de la grille et des axes sont présentement en base 5. En base 10, trop d'étiquettes sont générées à la fois. Idéalement, une étiquette sur deux en base 10 seraient affichées à la fois.