 Groupe : Membres
|
Bonjour,
J'ai fait un programme java qui doit afficher un dessin (le "flocon de koch", une courbe qui ressemble à un flocon de neige)
La compilation se passe bien.
Cependant, quand j'exécute sur mon PC, c'est bizarre :
un coup ça s'affiche bien mais pas tout,
un coup 2 branches s'affichnt n'importe où
un coup ça s'affiche comme au début...
Pourtant rien n'est aléatoire dans mon code, que voici :
Code : Java
import java.awt.*;
import java.awt.event.*;
class frac {
//fonctions de calcul de coordonnees
final static double RACINE3SUR2 = 0. 8660254040;
static double triangleX (double ax, double ay, double bx, double by ) {
return (bx + ax ) / 2. + (by - ay ) * RACINE3SUR2;
}
static double triangleY (double ax, double ay, double bx, double by ) {
return (by + ay ) / 2. - (bx - ax ) * RACINE3SUR2;
}
static double xpremiertiers (double ax, double ay, double bx, double by ) {
return ax+ (bx-ax )/ 3;
}
static double ypremiertiers (double ax, double ay, double bx, double by ) {
return ay+ (by-ay )/ 3;
}
static double xsecondtiers (double ax, double ay, double bx, double by ) {
return bx+ (ax-bx )/ 3;
}
static double ysecondtiers (double ax, double ay, double bx, double by ) {
return by+ (ay-by )/ 3;
}
//fin des fonctions de calcul des cooordonnees
//affichage d'un segment developpe a l'ordre n
static void traitrecursif (double ax, double ay, double bx, double by, int ordre, Graphics dessin ) {
if (ordre == 1) {int ax1= (int) ax;int ay1= (int) ay;int bx1= (int) bx;int by1= (int) by;
dessin. drawLine(ax1,ay1,bx1,by1 ); }
else {double mx= xpremiertiers (ax,ay,bx,by );
double my= ypremiertiers (ax,ay,bx,by );
double px= xsecondtiers (ax,ay,bx,by );
double py= ysecondtiers (ax,ay,bx,by );
double nx= triangleX (mx,my,px,py );
double ny= triangleY (mx,my,px,py );
traitrecursif (ax,ay,mx,my,ordre- 1, dessin );
traitrecursif (mx,my,nx,ny,ordre- 1, dessin );
traitrecursif (nx,ny,px,py,ordre- 1, dessin );
traitrecursif (px,py,bx,by,ordre- 1, dessin ); }
}
//fin de l'affichage d'un segment developpe a l'ordre n
//affichage fenetre et flocon
static Graphics affiche (int h, int l, int ordre ) {
Frame fenetre = new Frame("Dessin");
fenetre. addWindowListener(new WindowAdapter() {
public void windowClosing (WindowEvent we ) {
System. out. println("Fenetre fermee, c'est fini.");
System. exit(0);
}
});
fenetre. setBounds(10, 10, l, h );
fenetre. setBackground(Color. white);
fenetre. setForeground(Color. black);
fenetre. setVisible(true);
Graphics dessin = fenetre. getGraphics();
double gx= 150;double gy= 300; double hx= 300; double hy= 300; double ix=triangleX (gx,gy,hx,hy ); double iy=triangleY (gx,gy,hx,hy );
traitrecursif (hx,hy,gx,gy,ordre,dessin );
traitrecursif (ix,iy,hx,hy,ordre,dessin );
traitrecursif (gx,gy,ix,iy,ordre,dessin );
return dessin;
}
//fin de l'affichage fenetre et flocon
//fonction main
public static void main (String[] args ) {
affiche (500, 500, 5);
}
}
//fin de la fonction main
Quelqu'un saurait me corriger ça ?
Merci beaucoup d'avance...
Envie d'énigmes tortueuses ?
Alors à bientôt sur Mysterix !
Envie d'art sympa plutôt ?
Alors allez voir ce que fait Emmanuel Harel !
|