Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2117 connectés 

 


Dernière réponse
Sujet : [Java] kelk'un pourrai m'expliker ce code svp?
JeromeV

leboss a écrit a écrit :

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  




Si tu commencais par ton cours de java ?
Ce prog n'a rien de particulier niveau syntaxe java.
C'est l'algoritme utilisé qui est interessant et c'est complètement indépendant du java.
Pour plus d'infos sur l'algo, fait une recherche sur arbre (ou tree) + ifs dans n'importe quel moteur.

 

[jfdsdjhfuetppo]--Message édité par JeromeV--[/jfdsdjhfuetppo]


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
JeromeV

leboss a écrit a écrit :

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  




Si tu commencais par ton cours de java ?
Ce prog n'a rien de particulier niveau syntaxe java.
C'est l'algoritme utilisé qui est interessant et c'est complètement indépendant du java.
Pour plus d'infos sur l'algo, fait une recherche sur arbre (ou tree) + ifs dans n'importe quel moteur.

 

[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 a écrit a écrit :

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;
 }
}
 



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;
 }
}

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)