// Programme cree par Philippe Lucaud, Lycee Audiberti, Antibes
// Trace du http://fr.wikipedia.org/wiki/Triangle_de_Sierpinski
// Exercice: modifier ce logiciel pour tracer le tapis de Sierpinski
// a partir de: http://fr.wikipedia.org/wiki/Tapis_de_Sierpi%C5%84ski
// de maniere non recursive
void main() {
  // Calcul de trois nombres aleatoires compris entre 0 et 1
  double a = Math.random(), b = Math.random(), c = Math.random();
  // Calcul des coordonnees du Barycentre du systeme (A, a) (B, b) (C, c)
  // avec A = (0, 0), B = (1, 0), C = (1/2, √3/2) (triangle equilateral)
  double x_G = (b + c / 2(a + b + c);
  double y_G = (sqrt(3* c / 2(a + b + c);
  clear();
  int N = readInteger("Combien voulez-vous faire d'essais ? ");
  // Trace du triangle equilateral (A, B, C)
  reset(1.51);
  addLine(00104);
  addLine(100.5, sqrt(326);
  addLine(0.5, sqrt(32006);
  // Trace des points du triangle de Sierpinsky
  for(int n = 1; n <= N; n++) {
	// Tirage aleatoire
	int k = random(14);
	if(k == 1) {
	  double x_I = x_G / 2;
	  double y_I = y_G / 2;
	  addString(x_I, y_I, ""5);
	  x_G = x_I;
	  y_G = y_I;
	}
	if(k == 2) {
	  double x_I = (x_G + 12;
	  double y_I = y_G / 2;
	  addString(x_I, y_I, ""5);
	  x_G = x_I;
	  y_G = y_I;
	}
	if(k == 3) {
	  double x_I = (x_G + 0.52;
	  double y_I = (y_G + sqrt(322;
	  addString(x_I, y_I, ""5);
	  x_G = x_I;
	  y_G = y_I;
	}
  }
  println("done : aller voir le resultat dans la proglet !");
}