MacroJS
From GeoGebraWiki
Macro ou Prototype en javascript --Noël 08:38, 26 June 2006 (CEST)
L'objet de cette macro exemple est de construire à partir d'un point quelconque existant dans la figure un carré de côté choisi.
Dans le corps (<body>) du fichier htm, il faut insérer un formulaire (<form>) qui permette de recueillir ces 2 paramètres, et un bouton (<button>) qui lance l'exécution :
<form name="choix" method="get" action="carres.htm"> Point de départ ? <input size="8" maxlength="10" name="point" type="text"> Déplacement ? = <input size="8" maxlength="10" name="longueur" type="text"> <input type="button" value="Carré" onClick="carre();" name="button"> </form>
Dans la tête (<head)) du htm, il faut taper le code de la fonction Javascript :
<script language="JavaScript"> function carre() {
var applet = document.ggbApplet;
var dep=document.choix.point.value;
var cote=parseFloat(document.choix.longueur.value);
on récupère le point de départ : dep et le réél cote définissant la longueur du côté (avec un sens de construction) ;
Coin1="S1_"+dep; Coin2="S2_"+dep; Coin3="S3_"+dep; cotes="nb_"+dep;
on nomme les 3 sommets à construire et la longueur des côtés ;
comd0=cotes+"="+cote;
comd1=Coin1+"=(x("+dep+")+"+cotes+",y("+dep+"))";
comd2=Coin2+"=(x("+dep+")+"+cotes+",y("+dep+")+"+cotes+")";
comd3=Coin3+"=(x("+dep+"),y("+dep+")+"+cotes+")";
comd4="cot1_"+dep+"=Segment["+dep+","+Coin1+"]";
comd5="cot2_"+dep+"=Segment["+Coin1+","+Coin2+"]";
comd6="cot3_"+dep+"=Segment["+Coin2+","+Coin3+"]";
comd7="cot4_"+dep+"=Segment["+dep+","+Coin3+"]";
j'ai choisi d'écrire ici toutes les commandes, ce sont des chaînes de caractères obtenues par concaténation de valeurs fixes (entre guillemets) et de variables ; (L'utilisation de Javascript pose le problème de l'internationalité, un utilisateur de GeoGebra en une autre langue que Français devra remplacer Segment par l'équivalent dans la langue qu'il utilise.)
Ces ordres correspondent à une saisie en direct de (en supposant que vous partiez du point A avec un côté de 5) :
cotes=5
S1_A=(x(A)+cotes,y(A))
S2_A=(x(A)+cotes,y(A)+cotes)
S3_A=(x(A),y(A)+cotes)
cot1_A=Segment[A,S1_A]
cot2_A=Segment[S1_A,S2_A]
cot3_A=Segment[S2_A,S3_A]
cot4_A=Segment[A,S3_A]
applet.setRepaintingActive(false); applet.evalCommand(comd0); applet.evalCommand(comd1); applet.evalCommand(comd2); applet.evalCommand(comd3); applet.setVisible(Coin1, false); applet.setVisible(Coin2, false); applet.setVisible(Coin3, false); applet.evalCommand(comd4); applet.evalCommand(comd5); applet.evalCommand(comd6); applet.evalCommand(comd7); applet.setRepaintingActive(true); </script>
Là, c'est l'éxécution proprement dite, GeoGebra construit les 3 sommets, les cache et construit les 4 côtés.
