Logique
Boucles
Math
Texte
Listes
Données
Variables
Fonctions
Programmation
p5.js
Objets web
Propriétés
Formes
Tortue
Apparence
GeoGebra
var canevas, c_sur_2, c, rayon_jaune, rayon_rouge, gliss, rayons_egaux, nb_repet, repetitions, cote, cote_sur_2, centre, x, centreX, centreY, m, n; /** * Fonction exécutée une fois, au départ */ function actions_initiales() { disposerPageExecution(true,700); c = 600; c_sur_2 = c / 2; createElement("h1",'5 cercles tangents dans un carré'); createSpan('Rayon du cercle rouge : min '); gliss=createSlider((0.25 * (Math.sqrt(2) - 1)),0.5,0.5,0.001); createSpan(' max'); createSpan("<br>"); createSpan("<br>"); rayons_egaux=createCheckbox(' rayon rouge = rayon jaune',false); siChangementPrudent("rayons_egaux",rayons_egaux,"case_egalite_change",case_egalite_change); createSpan("<br>"); nb_repet=nouvelleGlissiereValeur('Nombre de répétitions ',1,8,1,1); createSpan("<br>"); choixAxes("MATH"); canevas=creerCanvas(650,650); canvas=canevas; eval('gliss.elt.oninput = function(){rayons_egaux.checked(false);}'); } /** * Fonction exécutée périodiquement, de façon répétée */ function actions_en_boucle() { repetitions = valeurPrudent("nb_repet",nb_repet); cote = 600 / repetitions; cote_sur_2 = cote / 2; rayon_rouge = cote * valeurPrudent("gliss",gliss); rayon_jaune = cote * ((Math.sqrt(2) / 2 - valeurPrudent("gliss",gliss)) / (Math.sqrt(2) + 1)); centre = cote_sur_2 - rayon_jaune; couleurFondC('#ffffff'); for (m = 1; m <= repetitions; m += abs(1)) { for (n = 1; n <= repetitions; n += abs(1)) { tracer_figure((m * cote - cote_sur_2) - c_sur_2, (n * cote - cote_sur_2) - c_sur_2); } } } /** * Décrire cette fonction… */ function tracer_figure(centreX, centreY) { fill_('#cccccc'); rect_((centreX + cote_sur_2),(centreY - cote_sur_2),(centreX - cote_sur_2),(centreY + cote_sur_2)); fill_('#ffff00'); cercle_((centreX + centre),(centreY + centre),rayon_jaune); cercle_((centreX + centre),(centreY - centre),rayon_jaune); cercle_((centreX - centre),(centreY + centre),rayon_jaune); cercle_((centreX - centre),(centreY - centre),rayon_jaune); fill_('#ff0000'); cercle_(centreX,centreY,rayon_rouge); } /** * Décrire cette fonction… */ function case_egalite_change() { if (etatCasePrudent("rayons_egaux",rayons_egaux)) { fixeValeurPrudent("gliss",gliss,(0.5 * (Math.sqrt(2) - 1))); } }