GeoGebra

Page pour TBI

Jump to: navigation, search

Cette page Htm.gifTBI.htm a pour vocation de faciliter l'utilisation de GeoGebra en classe avec un TBI.


Contents

Que fait cette page ?

Le calibrage et la précision des stylos de TBI ne sont pas toujours parfaits, et GeoGebra ne propose pas encore de modification du style par défaut des différents objets.

Cette page apporte une solution en grossissant automatiquement les points et les lignes, ce qui facilite grandement le déplacement et la manipulation des objets dans une figure GeoGebra avec un tableau blanc interactif.

Lisez le mode d'emploi intégré à la page pour comprendre les différents réglages proposés.


Pourquoi et comment utiliser cette page localement ?

Si vous n'avez pas de connexion internet stable ou disponible sur le poste du TBI, ou bien si l'appliquette GeoGebra n'est pas réglée selon vos gouts ou vos habitudes, alors il vous faut enregistrer la page sur votre ordinateur.

Dans ce répertoire du GUM téléchargez TBI.htm en cliquant sur l'icône Zip.gif. Décompressez ensuite cette archive à l'endroit voulu. Téléchargez le fichier TBI.ggb, et enregistrez le dans le répertoire précédent.

Ouvrez ensuite TBI.ggb avec GeoGebra, pour le paramétrer selon vos préférences :

- ouvrez ou non la fenêtre algèbre et la barre de saisie ;

- affichez ou non le repère et définissez la couleur de fond et les couleurs des axes ;

- réglez la taille des caractères, l'aspect des points...


Charger une figure déjà construite

Avant d'ouvrir un nouveau fichier, il est prudent de stopper la modification automatique du style. Si vous souhaitez grossir les points, appliquer le style à toute la figure en cliquant sur le bouton correspondant.


Au sujet du script

Cette page est programmée en JavaScript. Elle utilise des écouteurs (ClearListener et UpdateListener), elle récupère la figure avec la commande getXML(), elle modifie le fichier XML avec des expressions régulières puis modifie la figure avec les commandes setXML() et evalXML().

S'il est possible de modifier la couleur d'un objet avec l'instruction setColor() aucune instruction n'est prévue pour modifier la taille des points. C'est la raison pour laquelle il faut passer par l'analyse et la transformation du code XML.

Pour voir le script dans son ensemble, affichez le code source de la page.


Initilisation

La balise HMTL BODY se présente ainsi :

<body bgcolor="white" text="black" link="blue" vlink="blue" onload="depart();">

Après chargement de la page, le navigateur déclenche l'évènement "load" et la fonction JavaScript départ() est appelée :

function depart() {setTimeout('init()',100);}

Dans un dixième de seconde on appelle la fonction init :

var app;
function init()
{
	try
	{
		app = document.figureGGB; // l'appliquette s'appelle "app"
		app.registerAddListener("ajout"); // déclaration de l'écouteur d'ajout
		app.registerClearListener("down"); // déclaration de l'écouteur de remise à zero
		
           ....	
	}
	catch(e) 
	{
		setTimeout('init()',2000);
	}
}

Si l'appliquette GeoGebra n'est pas encore totalement chargée ou si elle n'est pas encore disponible, les instructions app = document.figureGGB; et app.registerAddListener("ajout"); déclencheront une erreur capturée par le bloc catch. Dans ce cas, on relance l'initialisation dans 2 secondes.

Un nouvel objet est créé

Quand un nouvel objet est créé (et que la modification automatique est bien activée), GeoGebra appelle la fonction "ajout" qui a été déclarée par app.registerAddListener("ajout");.

function ajout(obj)
{
	// la construction
	xml = new String(app.getXML()); // app.getXML() renvoie le code XML de la figure GeoGebra
	
	// suppression des sauts de lignes
	var cr_regexp = /\r|\n/g;           // Cette expression régulière trouve les sauts de ligne
	xml = xml.replace(cr_regexp, "");   // et ici on supprime les sauts de ligne

	// recherche et mémorisation de la section euclidianView
       // pour que l'instruction evalXML ne fasse pas revenir à la vue par défaut
	var euclide = new String((xml.match(/<euclidianView>.*?<\/euclidianView>/))[0]);
	
	// Recherche de la section voulue
       // c'est à dire de l'objet qui vient d'être créé
	var elem = '<element type\="[^"]*?" label\="'+obj+'".*?element>';
	regexp = new RegExp(elem);
	Xml = xml.match(regexp);
 	
	if (Xml == null) return; // la section n'existe pas ? 
	
	var objet = String(Xml[0]);
	// la taille des points :
	if (taille_point!=0) // Modification de la taille si l'utilisateur le souhaite
	{
		var motif=/pointSize val\="\d*"/g;
		objet = objet.replace(motif,"pointSize val=\""+taille_point+"\"");
	}

	// la couleur
	if (R!=-1) // Modification de la couleur
	{
		var motif = /objColor r\="\d*" g\="\d*" b\="\d*"/g;
		objet = objet.replace(motif,'objColor r="'+R+'" g="'+V+'" b="'+B+'"');
	}
	// l'épaisseur des traits
	if (taille_ligne!=0)
	{
		var motif = /thickness\="\d*"/g;
		objet = objet.replace(motif,'thickness="'+taille_ligne+'"');	
	}
	

	
	// modification de la figure
	if (temps==-1)
	{
	app.unregisterAddListener("ajout");
	app.unregisterClearListener("down");

	app.evalXML('<?xml version="1.0" encoding="utf-8"?><geogebra format="3.0">'+euclide+'<construction>'+objet+'</construction> </geogebra>');		
	app.registerAddListener("ajout");
	app.registerClearListener("down");
	}
	else
	{
	code='<?xml version="1.0" encoding="utf-8"?><geogebra format="3.0">'+euclide+'<construction>'+objet+'</construction></geogebra>';
	code='app.unregisterAddListener("ajout");app.unregisterClearListener("down");app.setRepaintingActive(false);app.evalXML(\+code+'\'); app.registerAddListener("ajout");app.registerClearListener("down");app.setRepaintingActive(true);';
	setTimeout(code,temps);
	}
	
}