Logique
Boucles
Math
Texte
Listes
Données
Variables
Fonctions
Programmation
p5.js
Objets web
Propriétés
Formes
Tortue
Apparence
GeoGebra
var canevas, nbAttracteurs, coeffAttraction, couleurs, n, r, t, rayons, i, x, y, decalage, Px, Py, valeursX, valeursY, choix, youTube, saisieEnCours, choix2, P0x, P0y, exSourisX, exSourisY; /** * Fonction exécutée une fois, au départ */ function actions_initiales() { disposerPageExecution(true,780); createElement("h1",'Jeu du chaos'); nbAttracteurs=nouvelleGlissiereValeur('Nombre d\'attracteurs ',3,10,3,1); stylerObjetPrudent("nbAttracteurs",nbAttracteurs,'largeur','500px'); siChangementPrudent("nbAttracteurs",nbAttracteurs,"initialiser",initialiser); createSpan("<br>"); coeffAttraction=nouvelleGlissiereValeur('Coefficient d\'attraction ',0,1,0.5,0.01); stylerObjetPrudent("coeffAttraction",coeffAttraction,'largeur','500px'); siChangementPrudent("coeffAttraction",coeffAttraction,"changer_coefficient",changer_coefficient); createSpan("<br>"); rayons=nouvelleGlissiereValeur('Rayon des sommets ',0,15,5,0.01); stylerObjetPrudent("rayons",rayons,'largeur','500px'); siChangementPrudent("rayons",rayons,"tracer_situation",tracer_situation); createSpan("<br>"); createSpan("<br>"); choixAxes("MATH"); canevas=creerCanvas(750,750); canvas=canevas; createElement("h1",'Vous pouvez saisir et déplacer<br />les sommets et le point de départ (noir)'); couleurs = ['#ff0000', '#33ff33', '#3333ff', '#ff9900', '#006600', '#000099', '#ffcc99', '#99ff99', '#ccccff', '#cc66cc']; P0x = 0; P0y = 0; exSourisX = 100000; exSourisY = 100000; saisieEnCours = false; initialiser(); youTube=insererPageWeb('../../Nouvelles/Fichiers/chaos/ChaosCadreSB.html',1400,1000,0,'#ffffff'); positionnerObjetPrudent("youTube",youTube,780,0); } function mathRandomInt(a, b) { if (a > b) { // Swap a and b to ensure a is smaller. var c = a; a = b; b = c; } return Math.floor(Math.random() * (b - a + 1) + a); } /** * Fonction exécutée périodiquement, de façon répétée */ function actions_en_boucle() { if (mouseIsPressed) { if (!saisieEnCours) { changer_configuration_init(); } } else { saisieEnCours = false; } t = valeurPrudent("coeffAttraction",coeffAttraction); for (var count = 0; count < 5000; count++) { choix = mathRandomInt(0, n - 1); Px = Px + t * (valeursX[choix] - Px); Py = Py + t * (valeursY[choix] - Py); stroke_((couleurs[choix])); point_(Px,Py); } } /** * Décrire cette fonction… */ function sourisX() { return posXsouris() - 375; } /** * Décrire cette fonction… */ function sourisY() { return 375 - posYsouris(); } /** * Décrire cette fonction… */ function changer_configuration_init() { saisieEnCours = true; x = sourisX(); y = sourisY(); if (Math.abs(x) < 375 && Math.abs(y) < 375) { choix2 = -1; for (i = 0; i <= n - 1; i += abs(1)) { if ((normeVecteur2D((x - valeursX[i]),(y - valeursY[i]))) <= r) { choix2 = i; } } changer_configuration(); } } /** * Décrire cette fonction… */ function initialiser() { n = valeurPrudent("nbAttracteurs",nbAttracteurs); decalage = 180 / n + 90; valeursX = []; valeursY = []; for (i = 0; i <= n - 1; i += abs(1)) { x = 360 * Math.cos((i * (360 / n) - decalage) / 180 * Math.PI); y = 360 * Math.sin((i * (360 / n) - decalage) / 180 * Math.PI); valeursX.push(x); valeursY.push(y); } tracer_situation(); } /** * Décrire cette fonction… */ function changer_configuration() { if (mouseIsPressed) { if (sourisX() != exSourisX || sourisY() != exSourisY) { if (choix2 == -1) { P0x = sourisX(); P0y = sourisY(); } else { valeursX[choix2] = (sourisX()); valeursY[choix2] = (sourisY()); } exSourisX = sourisX(); exSourisY = sourisY(); tracer_situation(); } faireDelaiPrudent("changer_configuration",changer_configuration,0.1); } } /** * Décrire cette fonction… */ function tracer_situation() { n = valeurPrudent("nbAttracteurs",nbAttracteurs); r = valeurPrudent("rayons",rayons); couleurFondC('#ffffff'); fill_('#330033'); cercle_(P0x,P0y,r); Px = P0x; Py = P0y; for (i = 0; i <= n - 1; i += abs(1)) { fill_((couleurs[i])); cercle_((valeursX[i]),(valeursY[i]),r); } } /** * Décrire cette fonction… */ function changer_coefficient() { tracer_situation(); Px = 0; Py = 0; }