Lier un graphique à une figure

From GeoGebraWiki

Jump to: navigation, search

Mise à jour du 14/09/2008 : Les appliquettes sont déclarées FramePossible="true". En pratique, double cliquer sur une appliquette permet de la faire "sortir" de la page, ce qui permet d'avoir la figure en plus grand (voir en plein écran).

Lier deux fenêtres : une figure et une représentation graphique (mis à jour le 22/04/2008) permet de lier deux fenêtres GeoGebra.

La première est dédiée à la construction d'une figure géométrique. L'utilisateur peut y construire directement sa figure, mais il peut aussi charger une figure qu'il a déjà construite avec GeoGebra.

La deuxième permet d'obtenir la trace d'un point mobile dont l'abscisse et l'ordonnée dépendent de deux grandeurs géométriques définies par la figure.

Cette page permet aussi :

- de tracer le lieu du point mobile ;

- de proposer une fonction qui modélise le lieu du point, ce qui permet éventuellement de tester des conjectures ;

- d'obtenir la liste des nombres et la liste des points de la figure (ce qui permet à l'utilisateur de copier puis coller des caractères particuliers - comme alpha par exemple).


La dernière version offre de plus la possibilité :

- de créer plusieurs points mobiles ;

- de marquer des positions particulières dans la section Trace (il s'agit d'un mode trace manuel) ;

- de capturer les coordonnées du (des) point(s) mobile(s) dans un tableau de valeurs.

Si la figure est enregistrée après la liaison, cette liaison est alors réutilisable pour une utilisation antérieure.

Les points qui contrôlent la liaison sont nommés : Nuts, Nuts_{1}, Nuts_{2} ... L'utilisateur à la possibilité de les créer lui même dans la figure s'il le souhaite. Il est alors impératif respecter l'ordre en nommant Nuts le premier (ou le seul) point, Nuts_{1} le deuxième, etc. Pour pouvoir initialiser la liaison avec ces points il suffit alors de cliquer sur le bouton "Lier les deux figures" sans spécifier d'abscisse et d'ordonnée.

Dans le tableau de valeurs, les points sont identifiables par un jeu de couleurs. Vous pouvez augmenter ou diminuer le nombre de décimales via le menu Options > Nombre de décimales dans la figure. S'il y a de nombreux points mobiles, il est conseillé de cacher le tableau de valeurs lors de la procédure de capture pour ne pas trop la ralentir (cliquer sur le lien "Tableau de valeurs" pour replier la section).



Utiliser la page en local (sans connexion internet)

C'est possible. Il suffit de télécharger et d'enregistrer sur votre ordinateur cette archive

Ensuite vous la décompressez dans le répertoire qui contient geogebra.jar (par exemple sous windows, il s'agit souvent du dossier Program Files/geogebra/).

Sinon, vous pouvez aussi choisir de créer un nouveau répertoire dans lequel vous collez le dossier Lier. Depuis GeoGebra vous exportez une feuille de travail dynamique (page HTML) dans le nouveau répertoire. Les jar utiles au bon fonctionnement de l'applet y seront créés.

Vous pouvez ensuite créer un raccourci sur le bureau vers la page LierUneCourbe.htm qui se trouve dans le dossier Lier que vous avez décompressé.



Au sujet du script

La liaison des deux fenêtres est programmée en javascript.

Vous pouvez afficher le code source de la page pour voir le script dans son ensemble.

Pour des information complémentaires sur la programmation des écouteurs lire : Les écouteurs

L'applet correspondant à la construction géométrique s'appelle figureGGB, et l'applet contenant le point mobile étudié s'appelle Courbe.

1) Communication entre les deux fenêtres : le point mobile

Écouter séparément l'abscisse et l'ordonnée pose un problème : si le point pilote n'est pas déplacé assez lentement, les appels provoqués par un changement d'abscisse et d'ordonnée sont trop désynchronisés. La trace obtenue devient rapidement aberrante.

Pour contourner ce problème on construit un point nommé Nuts dans figureGGB qui est rendu invisible

document.figureGGB.evalCommand("Nuts=\("+abs+","+ord+"\)");		// création du point Nuts dans la figure
document.figureGGB.setVisible("Nuts",false);				// le point est rendu invisible dans figureGGB

Ce point est ensuite copié dans Courbe :

document.Courbe.setVisible("Nuts",true);				// Dans courbe le point est visible
document.Courbe.setLabelStyle("Nuts",2);				// l'étiquette sera la valeur du point (ses coordonnées)
document.Courbe.setLabelVisible("Nuts",true);				// l'étiquette est visible

On assure ensuite la communication entre les deux fenêtres à l'aide d'un écouteur :

document.figureGGB.registerObjectUpdateListener("Nuts", "pointListener");

Dès que le point Nuts bouge dans figureGGB la fonction pointListener sera appelée :

function pointListener(objet)
{
	if (!document.figureGGB.isDefined("Nuts")) 
		{
			document.Courbe.setVisible("Nuts",false);
			return;
		}
		
	document.Courbe.evalCommand(document.figureGGB.getValueString("Nuts"));
	document.Courbe.setVisible("Nuts",true);
}

C'est cette fonction qui fait bouger Nuts dans la deuxième fenêtre.

Enfin, la trace est commandée par cette simple instruction :

document.Courbe.setTrace("Nuts",true);

2) Le lieu du point

L'obtention du lieu dans la deuxième fenêtre nécessite de copier l'intégralité de la figure dans la deuxième fenêtre. Cette copie est facilement obtenue à l'aide des fonctions getXML et setXML de GeoGebra :

document.Courbe.setXML(document.figureGGB.getXML());

Reste à rendre invisible toute la construction dans Courbe :

nbObj = document.Courbe.getObjectNumber();
for (i=0;i<nbObj;i++)
{
	nom=document.Courbe.getObjectName(i);
	document.Courbe.setVisible(nom,false);
}

La commande Locus (lieu en anglais) permettra ensuite d'obtenir le lieu voulu :

document.Courbe.evalCommand("noisette=Locus[NUTS,"+LePilote+"]")

après que l'utilisateur ait précisé le nom du point pilote qui est mémorisé dans la variable : LePilote

NUTS est un point construit comme Nuts, mais ses coordonnées ne subissent pas les appels de pointListener (il reste ainsi dépendant du point pilote dans Courbe).

3) Le reste du script

Tout le reste du script a essentiellement deux objets :

- Effectuer toute une série de vérifications pour éviter de donner de "mauvais ordre" à GeoGebra (risque de bug), et éviter la multiplication des écouteurs au fil de l'utilisation de la page ;

- Prendre en charge l'affichage dynamique de la page HTML (sans rapport avec GeoGebra).



D'où vient cette page HTML ?

Cette page a été créée par l'Irem d'Orléans-Tours et est extraite de l'e-cureuil : une banque d'illustrations animées pour les cours de Mathématiques en lycée.

Personal tools