exo2849
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| exo2849 [10/09/2010 09:11] – lzamo | exo2849 [30/07/2026 19:07] (Version actuelle) – supprimée - modification externe (Date inconnue) 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Exemple d' | ||
| - | {{ : | ||
| - | Cet article montre, sur un exemple, comment créer un exercice mathenpoche en utilisant instrumenpoche. L' | ||
| - | L' | ||
| - | |||
| - | * un triangle aléatoire apparaît, | ||
| - | * des instruments virtuels de géométrie sont disponibles | ||
| - | * on demande à l' | ||
| - | |||
| - | Si les noms des sommets et leurs emplacements sont aléatoires, | ||
| - | |||
| - | - la médiatrice d'un côté donné | ||
| - | - la médiane relative à un côté donné | ||
| - | - la hauteur issue d'un sommet | ||
| - | - la bissectrice issue d'un sommet | ||
| - | - la hauteur relative à un côté | ||
| - | ===== Préparation ===== | ||
| - | {{ : | ||
| - | Il faut créer un fichier flash .fla, télécharger tous les fichiers externes nécessaires à la création d'un exercice en respectant l' | ||
| - | |||
| - | Pour instrumenpoche, | ||
| - | |||
| - | ===== Image 1 ===== | ||
| - | Le code à mettre en image 1 et les explications pour ce qui concerne instrumenpoche. | ||
| - | |||
| - | ==== Le script ==== | ||
| - | <code actionscript> | ||
| - | // | ||
| - | //** Ce qu'il y a à personnaliser est là : NE PAS TOUCHER AU RESTE ... la suite en frame 3 ! ** | ||
| - | // | ||
| - | var nomDeLexo: | ||
| - | var nomDeLAide: | ||
| - | var nombreDeQuestions: | ||
| - | var nombreDeChances: | ||
| - | //la liste des boutons de l'exo : | ||
| - | var liste_boutons: | ||
| - | // | ||
| - | var oncharge_calc: | ||
| - | // | ||
| - | var oncharge_tep: | ||
| - | |||
| - | /** | ||
| - | Tout ce qui concerne iep (sauf le tableau des clips à charger) se trouve ici | ||
| - | **/ | ||
| - | // | ||
| - | var oncharge_iep: | ||
| - | |||
| - | var iep_parametres: | ||
| - | iep_parametres.liste_instruments =new Array(" | ||
| - | iep_parametres.boutons_geo = new Array(" | ||
| - | iep_parametres.boutons_lecteur = new Array(" | ||
| - | iep_parametres.options_point_fixe = true; | ||
| - | iep_parametres.options_crayon_droite = true ; | ||
| - | iep_parametres.bord_bas = 275; | ||
| - | iep_parametres.mode = " | ||
| - | var instrumenpoche = _root.createEmptyMovieClip(" | ||
| - | instrumenpoche._x=2000; | ||
| - | //FIN IEP | ||
| - | |||
| - | |||
| - | // | ||
| - | // | ||
| - | // | ||
| - | // | ||
| - | // | ||
| - | // | ||
| - | //clip accueillant les constantes : NE PAS CHANGER LE NOM !!! | ||
| - | _root.createEmptyMovieClip(" | ||
| - | _root.exoMeP.createEmptyMovieClip(" | ||
| - | // | ||
| - | //le loading au niveau 1 | ||
| - | var loading = _root.exoMeP.clips_externes.createEmptyMovieClip(" | ||
| - | _root.loading._x = 735/2; | ||
| - | _root.loading._y = 450/2; | ||
| - | //les formats au niveau 2 | ||
| - | var formats = _root.exoMeP.clips_externes.createEmptyMovieClip(" | ||
| - | //les fonctions au niveau 3 | ||
| - | var fonctions = _root.exoMeP.clips_externes.createEmptyMovieClip(" | ||
| - | //le fond au niveau 4 | ||
| - | var fond = _root.exoMeP.clips_externes.createEmptyMovieClip(" | ||
| - | //la boite de dialogue finale au ninveau 98 | ||
| - | var boite = _root.createEmptyMovieClip(" | ||
| - | //boite._x = 200; | ||
| - | //boite._y = 30; | ||
| - | //les fonctions de pilotage des outils au ninveau 97 | ||
| - | var pilotage = _root.createEmptyMovieClip(" | ||
| - | |||
| - | var traduction = _root.createEmptyMovieClip(" | ||
| - | ////////////////////////////////////////////////////////////////// | ||
| - | |||
| - | //on définit les clips externes à charger et leur cible | ||
| - | clips_a_charger = new Array( | ||
| - | [" | ||
| - | [" | ||
| - | [" | ||
| - | [" | ||
| - | [" | ||
| - | [" | ||
| - | [" | ||
| - | // | ||
| - | [" | ||
| - | |||
| - | charger_clips(clips_a_charger); | ||
| - | |||
| - | //fonction de chargement multiple | ||
| - | var mcl = new Object(); | ||
| - | var ecouteur_chargement = new MovieClipLoader(); | ||
| - | // l' | ||
| - | mcl.onLoadStart = function (cible_mc) { | ||
| - | trace(" | ||
| - | charger =false; | ||
| - | } | ||
| - | mcl.onLoadComplete = function (cible_mc) { | ||
| - | trace(cible_mc+" | ||
| - | charger=true; | ||
| - | } | ||
| - | mcl.onLoadError = function (cible_mc, codeErreur) { | ||
| - | trace(" | ||
| - | charger=true; | ||
| - | } | ||
| - | ecouteur_chargement.addListener(mcl); | ||
| - | var charger = true; | ||
| - | function charger_clips(tableau: | ||
| - | // | ||
| - | var n = tableau.length; | ||
| - | var c = 0; | ||
| - | | ||
| - | | ||
| - | clip = tableau[c][0]; | ||
| - | trace(clip) | ||
| - | if (!((String(clip).indexOf(" | ||
| - | and (oncharge_iep == false)) and !((String(clip).indexOf(" | ||
| - | and (oncharge_tep == false)) and !((String(clip).indexOf(" | ||
| - | and (oncharge_calc == false))) { | ||
| - | ecouteur_chargement.loadClip(tableau[c][0], | ||
| - | } | ||
| - | c++; | ||
| - | }if (c >n) { | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | // | ||
| - | | ||
| - | } | ||
| - | } | ||
| - | |||
| - | } | ||
| - | var onpatiente: | ||
| - | //permet de savoir si on a fini de patienter ou non | ||
| - | // permet de temporiser pendant nbsec secondes avant de passer à la fonction suivante (tipe=1) | ||
| - | // ou le temps d' | ||
| - | // REMPLACE les CHRONO | ||
| - | function onattend(tipe, | ||
| - | function attenddeuxsecondes() { | ||
| - | var arrivee = new Date(); | ||
| - | var secondesa = arrivee.getSeconds(); | ||
| - | if (secondesa> | ||
| - | var secondes = secondesa-secondesd; | ||
| - | } else { | ||
| - | var secondes = Number(secondesa)+(60-secondesd); | ||
| - | } | ||
| - | if (secondes> | ||
| - | if (tipe == 0) { | ||
| - | onpatiente = false; | ||
| - | clearInterval(kattend); | ||
| - | } | ||
| - | if (tipe == 1) { | ||
| - | clearInterval(kattend); | ||
| - | fonctions.avance(); | ||
| - | } | ||
| - | if (tipe == 2) { | ||
| - | clearInterval(kattend); | ||
| - | _level100._visible = true; | ||
| - | correction(); | ||
| - | fonctions.activer_bouton(" | ||
| - | } | ||
| - | } else { | ||
| - | return true; | ||
| - | } | ||
| - | } | ||
| - | var kattend = setInterval(attenddeuxsecondes, | ||
| - | var depart = new Date(); | ||
| - | var secondesd = depart.getSeconds(); | ||
| - | } | ||
| - | stop(); | ||
| - | |||
| - | </ | ||
| - | |||
| - | ==== Explications pour iep ==== | ||
| - | La partie concernant instrumenpoche est regroupée vers le début du script : | ||
| - | <code actionscript> | ||
| - | /** | ||
| - | Tout ce qui concerne iep (sauf le tableau des clips à charger) se trouve ici | ||
| - | **/ | ||
| - | // | ||
| - | var oncharge_iep: | ||
| - | |||
| - | var iep_parametres: | ||
| - | iep_parametres.liste_instruments =new Array(" | ||
| - | iep_parametres.boutons_geo = new Array(" | ||
| - | iep_parametres.boutons_lecteur = new Array(" | ||
| - | iep_parametres.options_point_fixe = true; | ||
| - | iep_parametres.options_crayon_droite = true ; | ||
| - | iep_parametres.bord_bas = 275; | ||
| - | iep_parametres.mode = " | ||
| - | var instrumenpoche = _root.createEmptyMovieClip(" | ||
| - | instrumenpoche._x=2000; | ||
| - | //FIN IEP | ||
| - | </ | ||
| - | |||
| - | Elle débute par | ||
| - | <code actionscript> | ||
| - | qui indique à l' | ||
| - | <code actionscript> | ||
| - | // | ||
| - | var oncharge_calc: | ||
| - | // | ||
| - | var oncharge_tep: | ||
| - | </ | ||
| - | |||
| - | Ensuite, il faut configurer instrumenpoche, | ||
| - | <code actionscript> | ||
| - | </ | ||
| - | avec quelques boutons supplémentaires dans la partie géométrie : | ||
| - | <code actionscript> | ||
| - | </ | ||
| - | Pour la correction, on prévoit de donner accès aux boutons essentiels de lecture d'une animation : | ||
| - | <code actionscript> | ||
| - | </ | ||
| - | À noter que ces trois tableaux donnent des listes de boutons dans un certain ordre. Si on veut permuter les boutons de la règle et de l' | ||
| - | |||
| - | Pendant la période de développement, | ||
| - | |||
| - | Ensuite viennent différentes options : | ||
| - | <code actionscript> | ||
| - | qui empêche que les points placés dans instrumenpoche soient déplacés à la souris. En effet, dans cet exercice, l' | ||
| - | |||
| - | <code actionscript> | ||
| - | va faire en sorte que les tracés au crayon soient des " | ||
| - | |||
| - | <code actionscript> | ||
| - | limite la zone de dessin d' | ||
| - | |||
| - | <code actionscript> | ||
| - | très important. '' | ||
| - | |||
| - | <code actionscript> | ||
| - | Création du clip dans lequel mathenpoche va charger iep.swf. Le niveau 92 est réservé à instrumenpoche dans mathenpoche, | ||
| - | **Attention** : ne pas nommer le clip '' | ||
| - | |||
| - | <code actionscript> | ||
| - | On place le clip de chargement hors de la scène par souci d' | ||
| - | |||
| - | ===== Image 3 ===== | ||
| - | Le script contenu dans l' | ||
| - | ==== Mise en place de l' | ||
| - | Un code habituel dans les exercices de mathenpoche, | ||
| - | <code actionscript> | ||
| - | fonctions.initialiser_exo(); | ||
| - | fonctions.viderMovieClips(); | ||
| - | </ | ||
| - | |||
| - | Ensuite, on génère trois lettres au hasard (les noms des sommets du triangle) et trois points également aléatoires. Ce code n'est pas spécifique à intrumenpoche, | ||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | <code actionscript> | ||
| - | // on choisit trois lettres de l' | ||
| - | code = []; | ||
| - | for (i=1; i<4; i++) { | ||
| - | code[i] = random(26)+65; | ||
| - | for (j=1; j<i; j++) { | ||
| - | if (code[i] == code[j]) { | ||
| - | i = i-1; | ||
| - | } | ||
| - | } | ||
| - | } | ||
| - | var lettre1 = String.fromCharCode(code[1]); | ||
| - | var lettre2 = String.fromCharCode(code[2]); | ||
| - | var lettre3 = String.fromCharCode(code[3]); | ||
| - | |||
| - | // | ||
| - | ok = false; | ||
| - | while (ok == false) { | ||
| - | ok = true; | ||
| - | x = random(100)+50; | ||
| - | xa = 365-x; | ||
| - | xb = 365+x; | ||
| - | e = random(2)+1; | ||
| - | p = Math.pow(-1, | ||
| - | xc = p*random(100)+365; | ||
| - | ya = 140+random(50)+p*30; | ||
| - | yb = 140+random(50)-p*30; | ||
| - | yc = random(40)+40; | ||
| - | if (ya == yb or xa == xc or xc == xb or Math.abs((ya+yb)/ | ||
| - | ok = false; | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Ceci étant fait, on affiche l' | ||
| - | <code actionscript> | ||
| - | _root.btn.Valider_btn.tabIndex = _root.nb_saisie+1; | ||
| - | _root.btn.Suite_btn.tabIndex = _root.nb_saisie+2; | ||
| - | //Affichage du n° de la question à l'aide de la fonction creer_texte : | ||
| - | fonctions.creer_texte_dynamique(_root," | ||
| - | if (numquestions == 3 || numquestions == 4) { | ||
| - | fonctions.creer_texte_dynamique(_root," | ||
| - | | ||
| - | | ||
| - | } else { | ||
| - | fonctions.creer_texte_dynamique(_root," | ||
| - | | ||
| - | | ||
| - | } | ||
| - | //on dessine le cadre de l' | ||
| - | fonctions.tracer_cadre_consigne(5, | ||
| - | </ | ||
| - | ==== Affichage d'iep ==== | ||
| - | |||
| - | Il faut ensuite montrer instrumenpoche puis, si nécessaire, | ||
| - | |||
| - | <code actionscript> | ||
| - | // je montre iep | ||
| - | instrumenpoche._visible = true; | ||
| - | // si iep n'est pas en mode géométrie, | ||
| - | if(!Instrumenpoche.geometrie){ | ||
| - | Instrumenpoche.permuter(); | ||
| - | } | ||
| - | instrumenpoche.iep.menu_geo._visible = true; | ||
| - | </ | ||
| - | |||
| - | Il faut bien distinguer '' | ||
| - | <code actionscript> | ||
| - | rend visible le clip '' | ||
| - | |||
| - | La classe '' | ||
| - | |||
| - | La dernière ligne affiche le menu donnant accès aux instruments, | ||
| - | ==== Script iep de la figure de l' | ||
| - | |||
| - | Ensuite, on va dessiner la figure de l' | ||
| - | |||
| - | Le script est un texte. Pour plus de clarté, on va le créer ligne par ligne. | ||
| - | |||
| - | La première ligne consiste à amener le crayon sur le point de coordonnées '' | ||
| - | <code actionscript> | ||
| - | script_pour_iep = "< | ||
| - | </ | ||
| - | Par exemple, si '' | ||
| - | |||
| - | |||
| - | Il faut bien prendre garde aux guillemets. En effet, on a besoin de guillemets : | ||
| - | * dans actionscript, | ||
| - | * dans iep, pour encadrer les valeurs des attributs (comme '' | ||
| - | Pour cela, on a deux types de guillemets : '' | ||
| - | |||
| - | Maintenant que le crayon est sur le premier sommet, on lui fait tracer le triangle : | ||
| - | <code actionscript> | ||
| - | script_pour_iep +="< | ||
| - | script_pour_iep +="< | ||
| - | script_pour_iep +="< | ||
| - | </ | ||
| - | puis on crée des points instrumenpoche aux sommets du triangle, on les nomme et on replace le crayon | ||
| - | <code actionscript> | ||
| - | script_pour_iep +="< | ||
| - | script_pour_iep +="< | ||
| - | script_pour_iep +="< | ||
| - | script_pour_iep +="< | ||
| - | script_pour_iep +="< | ||
| - | script_pour_iep +="< | ||
| - | script_pour_iep +="< | ||
| - | </ | ||
| - | La variable '' | ||
| - | * elle indique à iep après quelle action il doit se caler pour l' | ||
| - | * elle bloque le bouton " | ||
| - | Il faut donc définir cette variable à la longueur totale du script qu'on vient de créer : | ||
| - | <code actionscript> | ||
| - | Instrumenpoche.image_direct = (new XML(script_pour_iep)).childNodes.length; | ||
| - | </ | ||
| - | La fonction '' | ||
| - | <code actionscript> | ||
| - | LecteurIep.lecture_apres_chargement({anim:"< | ||
| - | </ | ||
| - | |||
| - | ===== Image 4 ===== | ||
| - | Après un | ||
| - | <code actionscript> | ||
| - | stop(); | ||
| - | </ | ||
| - | le code de l' | ||
| - | * une fonction '' | ||
| - | * une fonction '' | ||
| - | ==== Fonction valider ==== | ||
| - | On déclare une fonction qui doit se nommer '' | ||
| - | <code actionscript> | ||
| - | |||
| - | Cette fonction va effectuer des tests sur le script de la figure tracée par l' | ||
| - | |||
| - | La première chose à faire est de vérifier si l' | ||
| - | Ici, il faut savoir si une droite au moins a été tracée. On écrit le code suivant : | ||
| - | <code actionscript> | ||
| - | // test de la validité de la réponse avant de passer aux tests | ||
| - | valide = (TestIep.est_dans_iep({objet:" | ||
| - | </ | ||
| - | qui crée une variable '' | ||
| - | |||
| - | Par défaut, la validation masque le menu d' | ||
| - | <code actionscript> | ||
| - | iep.iep.menu_geo._visible = true; | ||
| - | </ | ||
| - | |||
| - | Pour la validation, il va falloir tester si une certaine droite a été tracée. Pour cela, il faut connaître deux points de cette droite, dont les coordonnées seront transmises à la fonction de test et nommées '' | ||
| - | |||
| - | Question 1 : Coordonnées de deux points de la médiatrice, | ||
| - | <code actionscript> | ||
| - | if (numquestions == 1) { | ||
| - | // médiatrice | ||
| - | xpoint1 = (xa+xb)/2; | ||
| - | ypoint1 = (ya+yb)/2; | ||
| - | xpoint2 = xpoint1+50; | ||
| - | ypoint2 = ypoint1+50*(xb-xa)/ | ||
| - | } | ||
| - | </ | ||
| - | Question 2 : Coordonnées de deux points de la médiane : le milieu d'un côté et le sommet opposé | ||
| - | <code actionscript> | ||
| - | // médiane | ||
| - | xpoint1 = (xa+xb)/2; | ||
| - | ypoint1 = (ya+yb)/2; | ||
| - | xpoint2 = xc; | ||
| - | ypoint2 = yc; | ||
| - | }</ | ||
| - | Question 3 : Hauteur | ||
| - | <code actionscript> | ||
| - | // hauteur sommet | ||
| - | xpoint1 = xa; | ||
| - | ypoint1 = ya; | ||
| - | xpoint2 = xa+50; | ||
| - | ypoint2 = ya+50*(xb-xc)/ | ||
| - | }</ | ||
| - | Question 4 : Bissectrice | ||
| - | |||
| - | On utilise une fonction utilitaire de '' | ||
| - | <code actionscript> | ||
| - | // bissectrice | ||
| - | xpoint1 = xa; | ||
| - | ypoint1 = ya; | ||
| - | var angle1 = fonctions.mesure_angle(xc, | ||
| - | var angle2 = fonctions.mesure_angle(xa+50, | ||
| - | var angle = angle1+angle2; | ||
| - | trace(" | ||
| - | xpoint2 = xa+200; | ||
| - | ypoint2 = ya+200*Math.tan(angle*Math.PI/ | ||
| - | }</ | ||
| - | Question 5 : Hauteur | ||
| - | <code actionscript> | ||
| - | // hauteur côté | ||
| - | xpoint1 = xc; | ||
| - | ypoint1 = yc; | ||
| - | xpoint2 = xc+50; | ||
| - | ypoint2 = yc+50*(xb-xa)/ | ||
| - | }</ | ||
| - | Ensuite, on teste si la bonne droite a été tracée avec iep. Il faut passer les coordonnées des points qu'on vient de calculer. | ||
| - | <code actionscript> | ||
| - | var bonne_reponse = (TestIep.est_dans_iep({objet:" | ||
| - | abscisse1: | ||
| - | ecart_angle: | ||
| - | </ | ||
| - | |||
| - | Si une droite quelconque a été tracée, on procède à la vérification et à l' | ||
| - | <code actionscript> | ||
| - | if (valide) { | ||
| - | _root.occupe = true; | ||
| - | _root.fonctions.desactiver_bouton(" | ||
| - | if (bonne_reponse == true) { | ||
| - | // si c'est bon : | ||
| - | _root.juste = true; | ||
| - | if (_root.nbr_reponse == 0) { | ||
| - | // si la première réponse est la bonne : | ||
| - | fonctions.indication(_root.trad[4][1], | ||
| - | } else if (_root.nbr_reponse == 1) { | ||
| - | // si juste après une erreur : | ||
| - | fonctions.indication(_root.trad[4][2], | ||
| - | } | ||
| - | //on affiche le score : | ||
| - | fonctions.afficher_score(); | ||
| - | _root.suite = 1; | ||
| - | } else { | ||
| - | // si c'est faux : | ||
| - | _root.juste = false; | ||
| - | if (_root.nbr_reponse == 0) { | ||
| - | // en cas de première erreur : | ||
| - | _root.nbr_reponse++; | ||
| - | _root.erreur1++; | ||
| - | message_indication = _root.trad[4][4]; | ||
| - | if (_root.nbr_reponse> | ||
| - | message_indication += _root.trad[4][139]; | ||
| - | } | ||
| - | fonctions.indication(message_indication, | ||
| - | // | ||
| - | _root.fonctions.activer_bouton(" | ||
| - | _root.occupe = false; | ||
| - | } else { | ||
| - | // en cas de deuxième erreur : | ||
| - | _root.nbr_reponse++; | ||
| - | if (_root.numquestions != _root.nbre_questions) { | ||
| - | //si ce n'est pas la dernière question, | ||
| - | message_indication = _root.trad[4][5]; | ||
| - | if (_root.nbr_reponse> | ||
| - | message_indication += _root.trad[4][150]; | ||
| - | } | ||
| - | fonctions.indication(message_indication, | ||
| - | // | ||
| - | onattend(2, | ||
| - | } else { | ||
| - | //si c'est la dernière question, on temporise, | ||
| - | //on corrige et on passe à la suite (on n' | ||
| - | _root.correction(); | ||
| - | _root.suite = 1; | ||
| - | } | ||
| - | //on affiche le score (suivant la configuration chargée) : | ||
| - | fonctions.afficher_score(); | ||
| - | } | ||
| - | //on affiche l'aide (suivant la configuration chargée) : | ||
| - | fonctions.afficher_aide(); | ||
| - | } | ||
| - | //envoi du résultat de l' | ||
| - | commphp(); | ||
| - | } else { | ||
| - | message_indication = _root.trad2[6][1]; | ||
| - | fonctions.indication(message_indication, | ||
| - | } | ||
| - | }</ | ||
| - | |||
| - | ==== Fonction correction ==== | ||
| - | Lorsque l' | ||
| - | |||
| - | Pour éviter des calculs trop ardus, on va utiliser la classe [[: | ||
| - | |||
| - | Ici, nous allons utiliser plusieurs fois la fonction '' | ||
| - | |||
| - | Cette fonction construit au compas un point équidistant de deux autres dont les coordonnées sont passées en paramètres. Elle renvoie un tableau [script de la construction, | ||
| - | |||
| - | Au début de la fonction de correction, on défini '' | ||
| - | <code actionscript> | ||
| - | // Fonction de correction : | ||
| - | function correction() { | ||
| - | Instrumenpoche.image_direct = ScriptIep.code_xml.firstChild.childNodes.length; | ||
| - | </ | ||
| - | On récupère le script instrumenpoche dans un texte. '' | ||
| - | <code actionscript> | ||
| - | var texte = ScriptIep.code_xml.firstChild.childNodes.join("" | ||
| - | </ | ||
| - | === Première question (médiatrice) === | ||
| - | La première chose à faire est de masque tous les instruments, | ||
| - | <code actionscript> | ||
| - | // on masque les instrus qui peuvent gêner éventuellement | ||
| - | if(numquestions==1){ | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | </ | ||
| - | |||
| - | Pour tracer la médiatrice à l'aide du compas, on utilise la fonction '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | Cette fonction renvoie un tableau, dont la première partie est une portion de script iep qui correspond au tracé des deux arcs de cercle. On ajoute ce morceau de script à notre texte : | ||
| - | |||
| - | <code actionscript> | ||
| - | var tab = MacroIep.placer_point_equidistant(xb, | ||
| - | | ||
| - | texte += tab[0]; | ||
| - | </ | ||
| - | Le tableau renvoyé par '' | ||
| - | <code actionscript> | ||
| - | texte+="< | ||
| - | texte += "< | ||
| - | nom='" | ||
| - | taille=' | ||
| - | </ | ||
| - | On masque le message puis on passe au deuxième point équidistant et on affiche le même message que précédemment, | ||
| - | |||
| - | Remarque : par défaut, '' | ||
| - | |||
| - | <code actionscript> | ||
| - | texte +="< | ||
| - | tab = MacroIep.placer_point_equidistant(xa, | ||
| - | distance: | ||
| - | texte += tab[0]; | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | | ||
| - | texte += "< | ||
| - | | ||
| - | | ||
| - | texte += "< | ||
| - | | ||
| - | </ | ||
| - | Ensuite, on trace la médiatrice à la règle : | ||
| - | <code actionscript> | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | | ||
| - | </ | ||
| - | Ici, nous avons utilisé l' | ||
| - | |||
| - | On ajoute des explications animées sur le fait que la médiatrice est perpendiculaire au segment et passe par son milieu : | ||
| - | |||
| - | <code actionscript> | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | | ||
| - | | ||
| - | texte+=MacroIep.creer_codage_angle_droit(xb, | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | | ||
| - | texte+="< | ||
| - | | ||
| - | } | ||
| - | </ | ||
| - | Pour cette fin de code, la nouveauté est la fonction '' | ||
| - | === Deuxième question (médiane) === | ||
| - | La correction de la deuxième question est plus simple que la précédente : les deux points importants sont un sommet du triangle initial (dont on a les coordonnées '' | ||
| - | <code actionscript> | ||
| - | else if(numquestions==2){ | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | </ | ||
| - | On peut coder des longueurs égales dans instrumenpoche. On place ces codages respectivement au quart et aux trois-quarts de la longueur du segment : | ||
| - | <code actionscript> | ||
| - | texte+="< | ||
| - | abscisse='" | ||
| - | id=' | ||
| - | texte+="< | ||
| - | abscisse='" | ||
| - | id=' | ||
| - | } | ||
| - | </ | ||
| - | === Troisième et cinquième questions (hauteurs) === | ||
| - | Les questions 3 et 5 concernent les hauteurs. Il n'y a pas de difficulté particulière si on a compris comment fonctionne le script d' | ||
| - | |||
| - | <code actionscript> | ||
| - | else if(numquestions==3 || numquestions ==5){ | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | | ||
| - | | ||
| - | var tab = fonctions.proj_ortho(xc, | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte='" | ||
| - | taille=' | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | couleur=' | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | } | ||
| - | </ | ||
| - | === Quatrième question === | ||
| - | {{ : | ||
| - | Pour la correction de la quatrième question (la bissectrice), | ||
| - | - tracer un arc de cercle de centre W qui coupe les segments [WQ] et [WB] ; | ||
| - | - repérer les points d' | ||
| - | - tracer un point équidistant de ces deux points ; | ||
| - | - tracer la droite passant par W et ce point équidistant. | ||
| - | |||
| - | On commence par masquer tous les instruments, | ||
| - | <code actionscript> | ||
| - | else{ | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | </ | ||
| - | Il faut calculer les angles que forment les deux côtés du triangle qui nous intéressent avec l' | ||
| - | <code actionscript> | ||
| - | var angle1 = Math.atan2(yb-ya, | ||
| - | var angle2 = Math.atan2(yc-ya, | ||
| - | </ | ||
| - | On positionne le compas sur le sommet : | ||
| - | <code actionscript> | ||
| - | texte +="< | ||
| - | texte +="< | ||
| - | </ | ||
| - | L'arc de cercle qu'on va tracer doit intercepter les deux côtés. Son rayon doit donc être inférieur à ces deux côtés. On le fixe égal au plus petit côté moins 30 pixels : | ||
| - | <code actionscript> | ||
| - | var eca = (Math.min(CalculIep.distance(xa, | ||
| - | texte +="< | ||
| - | </ | ||
| - | Comme l'arc de cercle doit " | ||
| - | <code actionscript> | ||
| - | var sens; | ||
| - | if(angle1< | ||
| - | angle1 -=10 | ||
| - | angle2 +=10; | ||
| - | sens = 5; | ||
| - | }else{ | ||
| - | angle1 +=10; | ||
| - | angle2 -=10; | ||
| - | sens = -5; | ||
| - | } | ||
| - | </ | ||
| - | Le compas trace cet arc de cercle (prendre garde à définir correctement le sens pour le tracé) : | ||
| - | <code actionscript> | ||
| - | texte+="< | ||
| - | texte +="< | ||
| - | texte+="< | ||
| - | couleur=' | ||
| - | texte +="< | ||
| - | </ | ||
| - | La fonction '' | ||
| - | <code actionscript> | ||
| - | var tab1 = CalculIep.point_sur_droite(xa, | ||
| - | var tab2 = CalculIep.point_sur_droite(xa, | ||
| - | </ | ||
| - | On utilise '' | ||
| - | <code actionscript> | ||
| - | tab = MacroIep.placer_point_equidistant(tab2[0], | ||
| - | {id1:53, id2:52, couleur: 0x006600, epaisseur: | ||
| - | texte += tab[0]; | ||
| - | texte +="< | ||
| - | </ | ||
| - | On trace la bissectrice. Les coordonnées du deuxième point de la bissectrice sont dans le tableau '' | ||
| - | <code actionscript> | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | ordonnee='" | ||
| - | texte+="< | ||
| - | texte+="< | ||
| - | </ | ||
| - | |||
| - | Enfin, on crée un codage d' | ||
| - | <code actionscript> | ||
| - | texte+=MacroIep.creer_codage_angle(xc, | ||
| - | texte+=MacroIep.creer_codage_angle(tab[1], | ||
| - | }</ | ||
| - | On passe à cette fonction les coordonnées de trois points A, B et C pour générer le codage de l'ange ABC. Il est possible de passer des options de dessin dans un objet supplémentaire. Ici, on fixe la couleur verte de la correction, deux rayons différents afin que les codages soient distincts et une forme " | ||
| - | === Finalisation === | ||
| - | Une fois les actions décrites dans la variable '' | ||
| - | <code actionscript> | ||
| - | ScriptIep.code_xml = new XML("< | ||
| - | </ | ||
| - | On règle '' | ||
| - | <code actionscript> | ||
| - | Instrumenpoche.image_fin = ScriptIep.code_xml.firstChild.childNodes.length; | ||
| - | </ | ||
| - | Puis on passe en mode lecture, étant entendu que la fonction '' | ||
| - | <code actionscript> | ||
| - | Instrumenpoche.permuter(); | ||
| - | </ | ||
| - | La fin de la fonction correction est classique : on affiche le bouton " | ||
| - | <code actionscript> | ||
| - | if (_root.numquestions< | ||
| - | _root.exoSuite = true; | ||
| - | fonctions.indication(_root.trad[4][6], | ||
| - | } else { | ||
| - | fonctions.indication(_root.trad[4][7], | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | Le script de cet exercice se termine par la fonction " | ||
| - | <code actionscript> | ||
| - | // la fonction onattend permet de temporiser et de passer à la suite en lançant la fontion " | ||
| - | _root.onEnterFrame = function() { | ||
| - | if (_root.suite == 1) { | ||
| - | onattend(1, | ||
| - | _root.suite = 0; | ||
| - | } | ||
| - | }; | ||
| - | </ | ||
exo2849.1284102713.txt.gz · Dernière modification : (modification externe)