| |||||
| Dernière réponse | ||
|---|---|---|
| Sujet : [Java] kelk'un pourrai m'expliker ce code svp? | ||
| JeromeV | 
 
 [jfdsdjhfuetppo]--Message édité par JeromeV--[/jfdsdjhfuetppo]  | 
			|
| Aperçu | 
|---|
| Vue Rapide de la discussion | 
|---|
| JeromeV | 
 
 [jfdsdjhfuetppo]--Message édité par JeromeV--[/jfdsdjhfuetppo]  | 
			
| leboss | url marche po :(
 bon bon etant donne ke je n'y connais absolument irne en java , kel site me conseillerez vous pour m permettre de decrypter vite fait ce prog plize merci  | 
			
| JeromeV | IFS (Iterated Function System) c'est le nom de cet algo.
 Un peu de doc à ce sujet : http://gjoly.free.fr/fractales-projet/IFS/ifs.html.  | 
			
| JeromeV | C'est assez simple et ca utilise un algo assez connu dont je ne parvient pas a retouver le nom.
 En gros, à partir de chaque branche, on dessine 2 nouvelle branches en leur appliquant une rotation et un scale aléatoires. C'est la méthode Fractale qui est recurssive qui se charge de ca.  | 
			
| cycojesus | Et tu le code en quoi ?
 Sinon, pas trop long, t'es gentil !! en plus y'a toute la partie graphique qui vient "polluer" l'algo proprement dit... 
 
  | 
			
| leboss | bon bon j viens de voir ke c un peu long a expliker kan meme...
 snif.. connaitriez po de bons sites ki explikerait un peu les focntiosn k'on trouve ici? ou sinon une exlpikation d'ensemble alors. merci encore  | 
			
| leboss | Vouala c dans le cadre de mon tpe,j dois faire un prog pour generer un arbre en fractale ; alors la j'ai trouvé un code source en java mais bon je n'y connais absolument rien en java ( un peu en c ) et j'aimerais k'on m'explik un peu le code svp :D
 paske en fait c po exactement ce ke je ve et ej voudrais ameliorer kelkes ptites choses . Thanx :jap: ( si kelk'un a le temps de faireune explikation ligne par ligne ca s'rait tres sympa ; le prog est po tres long) import java.awt.*; import java.applet.Applet; class Fractale extends Panel { Arbre arbre; boolean Affiche = false; double Rap, Pos, Ang; Color Coul[]; int X1, Y1, X2, Y2, Iter, Tr, Tv, Tb, Fr, Fv, Fb; Image OffScr; Dimension Dim; Graphics OffGra; Fractale(Arbre arbre) { this.arbre = arbre; } void Fractal(Graphics g, int Ax, int Ay, int Bx, int By, double Angle, int I) { g.setColor(Coul[I]); OffGra.setColor(Coul[I]); g.drawLine(Ax, Ay, Bx, By); OffGra.drawLine(Ax, Ay, Bx, By); if(I != Iter){ double Ag = Angle - Math.random() * Ang; double Ad = Angle + Math.random() * Ang; double Dist = Math.sqrt((Bx - Ax) * (Bx - Ax) + (By - Ay) * (By - Ay)); int Cx = (int) (Pos * Bx + (1 - Pos) * Ax); int Cy = (int) (Pos * By + (1 - Pos) * Ay); int Dx = (int) (Cx + Rap * Dist * Math.sin(Ag)); int Dy = (int) (Cy - Rap * Dist * Math.cos(Ag)); int Ex = (int) (Cx + Rap * Dist * Math.sin(Ad)); int Ey = (int) (Cy - Rap * Dist * Math.cos(Ad)); Fractal(g, Cx, Cy, Dx, Dy, Ag, I+1); Fractal(g, Cx, Cy, Ex, Ey, Ad, I+1); } } public void paint(Graphics g){ Dimension d = size(); if ((Affiche) || (OffScr == null) || (d.width != Dim.width) || (d.height != Dim.height)){ Dim = d; OffScr = createImage(d.width, d.height); OffGra = OffScr.getGraphics(); Coul = new Color[Iter+1]; for (int i = 0; i <= Iter; i++) Coul[i] = new Color((int)(Tr+i*(Fr-Tr)/Iter), (int)(Tv+i*(Fv-Tv)/Iter), (int)(Tb+i*(Fb-Tb)/Iter)); g.setColor(getBackground()); g.fillRect(0,0,d.width,d.height); OffGra.setColor(getBackground()); OffGra.fillRect(0,0,d.width,d.height); X1 = X2 = d.width >> 1; Y1 = size().height-1; Y2 = (int)(0.6*size().height); Fractal(g, X1, Y1, X2, Y2, 0, 0); Affiche = false; } else g.drawImage(OffScr, 0, 0, null); } } public class Arbre extends Applet { TextField tIter, tRap, tPos, tAng; Fractale Tree; public void init(){ setLayout(new BorderLayout()); Tree = new Fractale(this); add("Center", Tree); Panel p = new Panel(); add("South", p); String s; Tree.Iter=((s=getParameter("Iter" ))==null)? 12:Integer.parseInt(s); Tree.Pos=((s=getParameter("Pos" ))==null)? .5:Double.valueOf(s).doubleValue(); Tree.Rap=((s=getParameter("Rap" ))==null)? .8:Double.valueOf(s).doubleValue(); Tree.Ang=((s=getParameter("Ang" ))==null)? .6:Double.valueOf(s).doubleValue(); p.add(tIter=new TextField(Integer.toString(Tree.Iter),4)); p.add(tPos=new TextField(Double.toString(Tree.Pos),4)); p.add(tRap=new TextField(Double.toString(Tree.Rap),4)); p.add(tAng=new TextField(Double.toString(Tree.Ang),4)); p.add(new Button("Affiche" )); Tree.Tr=((s=getParameter("Tr" ))==null)? 128:Integer.parseInt(s); Tree.Tv=((s=getParameter("Tv" ))==null)? 64:Integer.parseInt(s); Tree.Tb=((s=getParameter("Tb" ))==null)? 0:Integer.parseInt(s); Tree.Fr=((s=getParameter("Fr" ))==null)? 64:Integer.parseInt(s); Tree.Fv=((s=getParameter("Fv" ))==null)? 192:Integer.parseInt(s); Tree.Fb=((s=getParameter("Fb" ))==null)? 0:Integer.parseInt(s); Tree.repaint(); } public boolean action(Event ev, Object arg){ if(ev.target instanceof Button){ String label=(String) arg; Tree.Iter=Integer.parseInt(tIter.getText().trim ()); Tree.Pos=Double.valueOf(tPos.getText().trim()). doubleValue(); Tree.Rap=Double.valueOf(tRap.getText().trim()). doubleValue(); Tree.Ang=Double.valueOf(tAng.getText().trim()). doubleValue(); if(Tree.Affiche=label.equals("Affiche" )) Tree.repaint(); return true; } return false; } }  | 
			



  
