
Dynamic
geometry, graph plotter,
and more for french
mathematic
teachers.
Copyright (C) 2005-2007
Nicolas Pourcelot
Sommaire
-
-
-
- Le module de
géométrie dynamique
- Le traceur de courbes
- La calculatrice
- Le module de statistiques
-
- Le fichier param.py
- La librairie mathlib
- La ligne de commande
-
I. LICENCE
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin St, Fifth Floor, Boston, MA 02110-1301
Ce programme est un logiciel libre; vous pouvez le
redistribuer et/ou
le modifier selon les termes de la GNU General Public Licence telle
qu'elle a été publiée par la Free
Software Foundation; soit la version 2 de la licence, ou (au choix)
toute version ultérieure.
Ce programme est distribué dans l'espoir qu'il puisse
être
utile, mais sans aucune garantie, pas même la garantie
implicite qu'il
puisse etre adapté à un usage donné.
Pour plus de précisions, lisez la
GNU General Public License.
Vous avez recu en principe une copie de la GNU General Public License
en même temps que ce programme. Si ce n'est pas le cas,
écrivez a l'adresse suivante : Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
II.
INSTALLATION
Pour fonctionner, ce programme nécessite la configuration
logicielle suivante :
- Windows 98 ou supérieur, ou une
distribution
Linux assez récente.
- Le logiciel
Python, version 2.3 ou supérieure.
(Logiciel
libre, disponible gratuitement sur http://www.python.org
)
Sous Linux, une version
récente est en principe
déjà
présente.
- La librairie graphique
WxPython,
version 2.5 ou 2.6 (des problèmes subsistent avec la version
2.7).
(Logiciel libre, disponible gratuitement sur http://www.wxpython.org)
Sous Linux, une version est en principe deja présente, mais
elle n'est
pas toujours assez récente.
- La
librairie
mathématique Numeric (Numarray ou numpy ne sont pas encore
supportées)
(Logiciel
libre, disponible gratuitement sur http://sourceforge.net/project/showfiles.php?group_id=1369&package_id=1351)
- La librairie mathématique Matplotlib
(Logiciel
libre,
disponible gratuitement sur http://www.sourceforge.net/projects/matplotlib)
Remarque
: ces logiciels doivent être installés dans
l'ordre mentionné.
Sous Windows, un redémarrage du système
est
conseillé après ces installations.
Après avoir téléchargé la
dernière
version de
WxGeometrie (http://www.sourceforge.net/projects/wxgeometrie),
dézippez l'archive dans un répertoire sur lequel
vous avez
les permissions nécessaires.
Vous pouvez lancer le programme en double-cliquant sur le fichier
wxgeometrie.pyw .
Sous Windows :
Il existe désormais un programme d'installation de
WxGéométrie.
Ce programme nécessite un accès
à internet, car il
télécharge les dernières versions de
Python, et
des autres librairies nécessaires (afin de ne pas alourdir
inutilement le programme d'installation en incluant
systématiquement tout).
Pour désinstaller
WxGéométrie, il suffit de supprimer le
répertoire d'installation du programme.
En effet, pour l'instant, WxGéométrie
n'écrit rien dans la base de registre.
Il existe également une version sans
installation, qui ne nécessite pas la présence de
Python.
Cette
dernière version est surtout livrée à
des fins de
démonstration (ou pour être utilisée
sur une clef
USB, style Framakey) ; elle est probablement moins
stable
(si quelqu'un veut reprendre et améliorer le projet ?).
III.
PREMIERS PAS
Beaucoup d'options de WxGéométrie ne sont pas
encore fonctionnelles.
Il ne s'agit pas de bugs en general, mais, simplement, du fait que ces
options ne sont pas encore complètement écrites.
Ainsi, un certain nombre de boutons et d'entrées du menu ne
provoquent aucune action dans les versions actuelles. Ceci correspond
à des fonctionnalités qui seront
implementées dans les prochaines versions.
WxGéométrie est composée actuellement
de 4 modules
:
- Un module de géométrie dynamique,
encore incomplet, mais
déjà fonctionnel.
- Un traceur de courbes, incomplet, mais
déjà stable et fonctionnel.
- Une calculatrice, en grande partie
complète.
- Un module graphique de statistiques, plus récent.
Note :
Les fonctionnalités du module de
géométrie dynamique sont utilisables dans le
traceur de courbes, et (en partie) dans le module de statistiques.
1.
Le module de géométrie dynamique
Vous pouvez pour l'instant faire les actions suivantes :
- créer une nouvelle feuille
- créer
différents types de points, de
droites, de cercles, des vecteurs, des intersections...
- modifier les propriétés de ces
différents objets (changer leur couleur, les masquer...)
- régler la fenêtre d'affichage
- orthonormaliser le repère
- annuler une
ou plusieurs actions
- exporter et sauvegarder la figure
Utilisation de la souris pour piloter le logiciel :
- Laissez enfoncé le bouton droit de la souris
pour
déplacer
la figure.
- La molette de la souris permet de
zoomer sur la figure.
- Laissez enfoncé la touche
CTRL, et le bouton gauche de la
souris, pour sélectionner une zone et zoomer dessus.
- Vous
pouvez déplacer les points libres de la figure avec la
souris.
- Placez-vous sur un point, ou un texte, et appuyez sur la
touche [Entrée], pour le renommer.
- Placez-vous sur un objet, et faites un clic droit pour
éditer ses propriétés
- Placez-vous sur un objet, et faites [SUPPR] pour le
supprimer, ou [Maj] + [Suppr] pour le masquer .
- Si vous créez un point libre en laissant la
touche [Maj] enfoncée, le point se placera sur le
quadrillage.
- Vous pouvez déplacer le nom d'un point autour de
celui-ci en cliquant dessus, la touche [Alt] étant
enfoncée.
Note
:
Pour la création des objets
géométriques, il existe une abondante aide
contextuelle dans chaque fenêtre de création
d'objet.
Cliquez sur le point d'interrogation en haut de la fenêtre,
puis sur un champ, pour obtenir une aide detaillée.
En cliquant avec le bouton du milieu de la souris dans un champ, vous ferez également apparaitre diverses propositions.
Vous pouvez utiliser les notations suivantes : [A B] pour le segment
[AB], (A B) pour la droite (AB), et A>B pour le vecteur
A->B.
Remarquez l'espace entre les lettres "A" et "B" dans les deux
premiers
cas.
Nom, étiquette et formule
Vous remarquerez que chaque objet possède quatre modes
d'affichage : nom, étiquette, formule, ou aucun.

Que signifient ces 4 modes ?
- Mode « Nom » : le nom de l'objet est
affiché.
Un nom d'objet doit commencer par une lettre (non
accentuée), suivie de lettres (non
accentuées) et de chiffres.
Il est forcément unique.
Certains noms sont réservés (comme le e
de
l'exponentielle par exemple).
- Mode « Etiquette » : un texte est
affiché à la place du nom.
Ce mode permet d'associer n'importe quel type de texte à un
objet.
La syntaxe LATEX est également partiellement
supportée, dans ce cas, le texte doit être entre $.
Exemple :
"$\alpha_{n}$"
- Mode « Formule » : le texte
affiché est interprété comme une
formule.
On peut aussi mélanger du texte
interprété et non
interprété, en mettant les blocs à
interpréter entre { }.
Exemple :
"Le point A a pour abscisse {A.x} et pour ordonnée {A.y}."
- Mode « Aucun » : rien n'est
affiché.
2. Le
traceur de courbes
Vous pouvez pour l'instant faire les actions suivantes :
- régler la
fenêtre d'affichage
- orthonormaliser le
repère
- utiliser des objets géométriques
Le traceur de courbes
supporte les fonctions définies par morceau, continues ou
non.
Exemples
:
1) Soit la fonction f,
définie sur R-{0} par f(x)=1/x
Remplissez les champs de la manière suivante :
![[V] Y1= [ 1/x ] sur [ R-{0} ]](images/inverse.png)
Notes
:
vous remplissez le premier champ avec 1/x (la
fonction), le deuxième avec l'intervalle de
définition,
c'est-à-dire
R-{0}.

2) Soit la fonction f,
définie sur [-2;0[ par f(x)
= -1, et sur
[0;1[ U ]2;3] par f(x) = x
Remplissez les champs de la manière suivante :
![[V] Y2= [ -1|x ] sur [ [-2;0[|[0;1[U]2;3] ]](images/morceaux.png)
Notes
:
Vous remplissez le
premier champ avec la fonction.
Comme elle est définie par morceaux, on
utilise le symbole "|" comme séparateur: ce qui donne -1|x.
Vous
remplissez le 2ème champ avec l'intervalle de
définition.
Comme elle
est définie par morceaux, on utilise le symbole "|" comme
séparateur:
ce qui donne [-2;0[|[0;1[U]2;3].

3.
La calculatrice
Son fonctionnement sera assez
familier pour quiconque a déjà utilisé
une calculatrice
scientifique.
Elle
permet de travailler sur des nombres réels ou complexes.
Par ailleurs,
elle possède quelques fonctions d'arithmétique :
- factor(4521)
décompose 4521 en produit de facteurs premiers.
- gcd(452,
128) calcule
le pgcd de ces deux entiers.
- diviseur(48566)
donne la liste des
diviseurs d'un entier.
Enfin, elle supporte le calcul fractionnaire
exact.
Note : Certaines
fonctions
mathématiques ne supportent pas encore
les
fractions.
Dans ce cas, décochez la case suivante :
![[V] Calcul exact si possible.](images/calc_exact.png)
Les
variables a, b, c, d, ... et A, B, C, D... peuvent
être
utilisées pour mémoriser des valeurs, ou
définir des fonctions.
Exemples
:
1) a = 25+7/4
2) f(x)=2x+17
Attention, les
variables E, e et i sont protégées.
- e et E designent la constante
exp(1). Par ailleurs, 7e5 signifie 7*10^5, 12e-3 signifie 12.10-3,
à
ne pas confondre avec 12*e-3 !!
- i
désigne une racine de -1.
4. Le
module statistiques
Ce module
sert essentiellement à tracer des diagrammes, qui n'existent
pas
toujours sur tableur, ou qui y sont incorrectement définis.
A l'origine,
ma
motivation était essentiellement de pouvoir tracer des
histogrammes, qu'OpenOffice.org® ou Excel® confondent
avec les
diagrammes en barre.
Il fait aussi la différence
entre
diagrammes en barres et en bâtons (contrairement à
ce
qu'on peut lire souvent, la différence essentielle n'est pas
esthétique).
Voir à ce sujet par exemple
un récapitulatif de Lubos Prchal à
l'adresse suivante : http://www.karlin.mff.cuni.cz/%7Eprchal/fr/deug/tele/deug01.pdf.
Voici
une présentation des principaux types de graphiques :
Diagrammes
en barres :
Utilisés en
particulier pour des séries à
caractère qualitatif.
Exemple : la
répartition des voyelles dans l'alphabet.
On
sélectionne le mode :

On
ajoute les valeurs et les effectifs (ou fréquences) qui leur
correspondent.
La
syntaxe est la suivante : « effectif * valeur »
(valeur
doit être entre guillemets, pour des valeurs non
numériques).

Il
ne reste plus qu'à compléter la
légende :

Et
à appuyer sur [Entrée] dans un des champs.
Le
résultat est le suivant :

Diagrammes
en bâtons :
Utilisés pour
des séries à caractère quantitatif
discret.
Exemple : la répartition des pointures de
chaussures chez les femmes françaises adultes (2005).
On
sélectionne le mode :

On
ajoute les valeurs et les effectifs (ou fréquences) qui leur
correspondent, et on complète la légende :

On presse la touche
[Entrée] dans un des champs.
Le résultat
est le suivant :

Histogrammes
:
Utilisés pour des
séries à caractère quantitatif continu.
On
va reprendre l'exemple précédent, en regroupant
les pointures par classe.
On sélectionne
le mode :

On
complète la rubrique « Regroupement par classes
».

Pour les
histogrammes, il n'y a pas d'ordonnée, mais il faut
préciser la nature de l'unité d'aire.

Et on appuye sur
[Entrée].

Pour
aller plus loin :
- A la
place des valeurs numériques, on peut tout à fait
insérer des formules.
Exemple :

- La génération de listes est
également possible.
La syntaxe est celle de Python (cf. list comprehensions
dans la documentation de Python).
Essayez par exemple de rentrer cette formule : [(rand(),i) for i in
range(4)].
- Dans Outils, trois
sous-menus permettent respectivement de créer des
expériences.
En particulier, à titre
d'exemple, il est possible de simuler des lancers de
dés, et des sondages simples.
N'hésitez
pas à éditer le fichier experience.py
dans modules/statistiques/, et à y
ajouter de nouvelles fonctions.
Vous pourrez ensuite
réaliser vos propres expériences, depuis le menu
« Experience ».

Entrez votre formule dans le champ
« Experience » (ici, un lancer de dé),
et le nombre d'expériences.
Eventuellement,
entrez aussi les valeurs possibles . Pour un lancer de dé
par
exemple, cela permet d'afficher en légende 1, 2, 3, 4, 5 et
6,
quand bien même il n'y aurait aucun « 4
» par exemple.
Notes :
-
Pour simuler des lancers de dés, mieux vaut utiliser le menu
spécialement dédié (quelques
optimisations y ont
été faites).
- La case «
lancer une animation » n'a pas d'effet pour l'instant.
IV.
UTILISATION AVANCEE
1. Le fichier param.py
Un grand nombre de
paramètres peuvent être modifiés dans
le fichier param.py avec un
simple éditeur de textes.
Exemple:
Remplacez "affiche_axes =
True" par "affiche_axes = False" pour que les axes ne soient plus
affichés par defaut.
2. La
librairie mathlib
Des fonctions mathématiques peuvent être
simplement ajoutées à la calculatrice. Il suffit
de les insérer à la
fin du fichier fonctions.py du
répertoire mathlib/.
Python est un langage de programmation simple et
efficace ; si vous connaissez quelques rudiments en programmation, vous
apprendrez vite à étendre les fonctionnalites de
la calculatrice à vos
besoins !
Exemple:
"def ppcm(a,b): return a*b/gcd(a,b)"
3. La
ligne de commande
Introduction:
La ligne de commande servait à l'origine essentiellement
à
débuguer le programme.
(Ou à réaliser certaines opérations
internes,
etc...)
Depuis la version 0.101, son maniement est devenu plus aisé
(et
personnellement, je l'utilise assez fréquemment pour
créer des objets géométriques).
Elle fonctionne pour l'instant
dans le module géometrie, dans le module
traceur, et dans le module statistiques.
Utilisation courante:
L'utilisation la plus courante est la création d'objets
géométriques simples.
Quelques exemples parleront mieux qu'un long discours...
Exemples
1) "A=Point(1,2)" ou "A=(1;2)"
Création d'un point A de coordonnées (1 ; 2).
Attention au ";" dans le deuxième cas.
2) "AB=Segment(A,B)" ou "AB=[A B]"
Création du segment [AB].
Attention à l'espace entre les lettres dans le
deuxième cas.
3) "d=Droite(A,B)" ou "d=(A B)"
Création de la droite (AB).
Attention à l'espace entre les lettres dans le
deuxième cas.
4) "u=Vecteur(A,B)" ou "u=A>B"
Création du vecteur A->B.
5) "M=C+2*(A>B)"
Création du point M vérifiant C->M = 2
A->B.
Les parenthèses sont obligatoires.
Utilisation avancée:
Précédée de ":", la commande est
interprétée
comme un instruction
Python.
Dans le cas contraire la commande se rapporte à la feuille
en
cours.
Précédé de "&", le
résultat de la commande sera affiché
dans la console.
Par ailleurs, "!n" fait référence au
nième
onglet ; "!"
fait référence a l'onglet actuel.
Pour être exhaustif, on notera que
"!1!" référence au canevas de l'onglet
1.
Logiquement, "!!" fait
lui référence au canvas de l'onglet
actuellement ouvert.
Enfin, "!:" fait référence à la
feuille actuelle, et "!::" à son gestionnaire d'objets.
Ces raccourcis pratiquent mais peu intuitifs servent essentiellement au
débogage...
Exemples :
1)
":print 'hello world !'"
Ceci va afficher 'hello wold !' sur la
console.
Notes :
":& 'hello world !'" produirait le même
resultat.
2) "&A"
Affiche, s'il existe, l'objet A dans la
console.
3) "A.coordonnees(-2,3)"
En supposant que A soit un
point, change les coordonnées de A en (-2,3).
4) ":!!fen((-5,2,-7,3))"
Change la fenêtre d'affichage en (-5,2,-7,3).
Notes : Il
s'agit d'une
commande de bas niveau, l'affichage n'est pas automatiquement
rafraîchi.
La commande de haut niveau correspondante est :
":!!set_fenetre(-25,2,-7,3)"
V.
COMMENT CONTRIBUER ?
Vous pouvez par exemple :
- m'envoyer
un mail à l'adresse suivante : wxgeo@users.sourceforge.net,
en me donnant vos impressions générales.
- corriger les éventuelles fautes
d'orthographe.
- me signaler des bugs
existants, et non repertoriés dans le fichier doc/notes.txt
.
- me proposer
des corrections de bug :)
- ajouter
des fonctions mathématiques a la
calculatrice
- trouver
un moyen d'accélérer Matplotlib (même
si des progrès ont été faits)
- compléter cette documentation ou
créer
un tutoriel (je manque de temps pour tout faire !)
Je suis également ouvert
à
toute autre contribution, et je suis prêt à
travailler en équipe... :-)
Je
recherche en particulier (liste non exhaustive) :
- des
personnes pour m'aider à maintenir et à
améliorer :
- le fonctionnement
sous Linux :
tests, création de scripts bash
d'installation, de paquetages .deb ou .rpm, guides utilisateurs,
etc..., chose que je n'ai pas le temps de faire aussi bien que je le
souhaiterais.
- le fonctionnement sous MacOs X :
théoriquement,
ça devrait tourner
assez facilement, mais je n'ai jamais eu la
possibilité
de le tester.
- des
personnes intéressées par la construction de
nouveaux modules pour WxGéométrie.
Je
pense en particulier à des professeurs de
mathématiques, de
sciences-physiques, de technologie... qui auraient un peu
d'expérience
en programmation objet (mais pas nécessairement en python :
python en
lui-même s'apprend en une semaine).
Une
première expérience fructueuse a
déjà
commencée, en collaboration avec Christophe Vrignaud.
- des
personnes pour me faire remonter des rapports de bugs, ou des
suggestions. A deux exceptions près, les seuls
échos que j'ai pu avoir,
ce sont les statistiques de sourceforge. Je sais que le projet manque
encore de maturité, mais au fil des versions, il y a
désormais un peu
de matière. Toutes les critiques sufisamment
précises sont bonnes à
prendre. ;-)
Note :
une documentation spécifique pour
développeurs se trouve dans le répertoire doc/developpeurs/.
VI. REMERCIEMENTS
Un
grand merci à mon frère Thomas pour ses conseils
initiaux et à Sophie pour ses idées ... et sa
patience !
Merci
également à tous ceux qui ont
pris le temps de faire quelques commentaires sur ce programme (Enzo,
Rhydwen Volsik, Robert Setif...),
et
m'ont encouragé à continuer.
Merci à Christophe Bal pour ses commentaires, et pour avoir proposé la syntaxe du module de Probabilités,
Remerciements tout particuliers à Christophe Vrignaud,
auteur de Scicalc, qui a permis son intégration à
Wxgéométrie.
Merci enfin à Stéphane Clément d'avoir
fait entrer Wxgéométrie sur le wiki de
l'académie d'Aix-Marseille.