« Programmation objet et géométrie/Objets en Python sous Gimp/Programmation JavaScript sous ImageJ » : différence entre les versions

Contenu supprimé Contenu ajouté
→‎Sierpinski : simplification du code
Ligne 129 :
 
===Sierpinski===
 
====Version itérative====
 
Le triangle de Sierpinski, version ''IFS'', est placé dans un objet appelé ''flocon'', qui est une instance de la classe ''image'':
Ligne 171 ⟶ 173 :
[[image:SierpinskiImageJ.png|center]]
 
 
Refaire la même figure en noir et blanc est laissé en exercice. Dans ce cas, on peut utiliser la méthode statistique ''Fractal Box Count'' d'ImageJ pour estimer sa dimension fractale. Le diagnostic d'ImageJ est alors celui-ci:
====Version récursive====
 
On peut aussi utiliser l'objet ''triangle'' utilisé ci-dessus pour dessiner le triangle de Sierpinski comme un polygone. Seulement on aura besoin non pas de la distance entre deux points, mais de leur milieu (un point):
 
<source lang="javascript">
function point(x,y){//objet point
this.x=x;
this.y=y;//les coordonnées sont des propriétés du point
this.plot=function(proc){//l'affichage est une méthode du point
proc.putPixel(x,y,255*256+255*256*256);
}
}
 
function milieu(a,b){//a et b sont deux points
return new point((a.x+b.x)/2,(a.y+b.y)/2);
}
 
function triangle(a,b,c,proc){//a, b et c sont les sommets du triangle,
// proc est là où on le dessine
proc.moveTo(a.x,a.y);// on part du premier sommet
proc.lineTo(b.x,b.y);// tracé du côté [ab]
proc.lineTo(c.x,c.y);// puis du côté [bc]
proc.lineTo(a.x,a.y);// et du côté [ca]
}
</source>
 
Avec ces objets, la définition récursive du polygone de Sierpinski est assez courte:
 
<source lang="javascript">
function sierpinski(a,b,c,proc,n){//définition récursive du triangle de S.
if(n<1){//ordre nul: on ne dessine que le triangle
triangle(a,b,c,proc);
} else {
sierpinski(a,milieu(a,b),milieu(a,c),proc,n-1);
sierpinski(milieu(a,b),b,milieu(b,c),proc,n-1);
sierpinski(milieu(a,c),milieu(b,c),c,proc,n-1);
}
}
</source>
 
 
 
 
 
RefaireComme lale mêmetriangle figureci-dessus est en noir et blanc est laissé en exercice. Dans ce cas, on peut utiliser la méthode statistique ''Fractal Box Count'' d'ImageJ pour estimer sa dimension fractale. Le diagnostic d'ImageJ est alors celui-ci:
 
[[image:SierpinskiDimensionImageJ.png|center]]