Découverte des coordonnées polaires

mercredi 1er septembre 2010
par  Alain BUSSER

Quand un python rencontre une tortue, qu’est-ce qu’ils se racontent ?

Des histoires de reptiles, ou de coordonnées polaires ?

Pas d’algorithmique dans cette activité de découverte, mais un peu de programmation en langage Python, avec son objet « tortue »

Quand on observe même brièvement le module tortue de Python (langage), on constate que puisque les instructions de ladite tortue s’expriment dans son repère, elles sont naturellement décrites en coordonnées polaires. Les activités ci-dessous peuvent donc également être faites en LOGO, en Scratch, ou avec le module tortue d’Xcas... Mais ici, c’est l’interface IDLE qui a été choisie, puisqu’elle permet de faire sous Python une séance interactive.

La première chose à faire, c’est d’enrichir le langage Python avec les instructions telles que forward et left du module tortue, ce qui se fait en tapant

from turtle import *

Ensuite setpos(0,0) replace la tortue à l’origine, et setheading(0) la dirige selon l’axe des abscisses.


Problème numéro 1 :

On demande à la tortue de tourner à gauche d’un angle de 30° puis d’avancer de 200 pixels.

Où se trouve-t-elle alors (abscisse et ordonnée) ?

Certes le module turtle de Python connaît la réponse :

La question posée ici est de savoir comment ces coordonnées peuvent être calculées (on peut invoquer le manque de précision de Python en demandant un résultat plus précis, ou en demandant de vérifier la précision de Python).

Puisque le module tortue a ouvert une fenêtre graphique avec un segment représentant le déplacement de la tortue, autant compléter le dessin. Pour commencer, on téléporte la tortue à l’origine, avec setpos(0,0) et on en profite pour la remettre parallèle à l’axe des abscisses avec setheading(0).

Ensuite, puisqu’on a vu une abscisse de 173,21, on la fait avancer de 173,21, sur ordre du capitaine Spock, pardon, Python, et après une rotation de 90° vers la gauche, avancer de 100 (ordonnée fournie précédemment par le capitaine Spock-Python), pour vérifier qu’elle est bien arrivée au même endroit que précédemment. La question qui se pose alors naturellement est celle de la nature du triangle ainsi formé (on a tout fait pour ça aussi !)

On peut alors demander aux élèves de donner les angles de ce triangle (en degrés voire en radians) et d’utiliser la trigonométrie pour en déduire les longueurs autres que l’hypoténuse. Python permet d’ailleurs de le faire mais

  1. seulement après avoir chargé le module math
  2. en radians
  3. avec une précision fluctuante :

Problème numéro 2 :

On recommence tout avec une autre position (ici, un angle obtus) :

On retéléporte la tortue à l’origine (ou on efface la figure ce qui revient au même, avec clearscreen), puis on lui demande de faire un tiers de tour vers la gauche, puis de se déplacer de 130 unités. Même question que tout-à-l’heure :

Où se trouve maintenant cette pauvre tortue ?

Comme précédemment, Python peut répondre à la question, et on demande essentiellement de vérifier ses calculs.


Problème numéro 3 :

Après avoir effacé l’écran (et donc remis la tortue à sa position d’origine), on va encore la téléporter, cette fois-ci vers la position de coordonnées (160 ;120) :

La question est alors

Aider la tortue à rentrer chez elle, sans la téléporter à nouveau.

Autrement dit, alors que les exercices précédents visaient à convertir des coordonnées polaires en cartésiennes, celui-ci demande l’inverse, à un demi-tour près (la tortue n’est pas chargée de revenir à sa position actuelle, mais au contraire de revenir à l’origine).

On peut très bien utiliser la calculatrice pour faire les calculs mais aussi la console Python, ce qui présente d’ailleurs un intérêt double puisque

  1. Python calcule en radians, il faut ensuite convertir en degrés pour le module tortue ;
  2. le nombre de chiffres affichés par défaut dans IDLE est impressionnant !

Le résultat de ces calculs permet effectivement à la tortue de rentrer chez elle, à condition de ne pas oublier le demi-tour préalable :


Question subsidiaire :

En multipliant les exemples précédents, on remplit l’heure de TP, surtout avec des élèves (et prof...) n’ayant jamais vu Python. Mais s’il y a des champions, des rapides etc. on peut les occuper avec une introduction aux rotations. En effet chaque fois que la tortue tourne de 10° entre deux répétitions du même programme, elle construit l’image de la première figure par une rotation autour de l’origine, d’angle 10°. Par exemple, pour un cercle, ce script

produit l’effet suivant :

(le carré produit par l’aliasing est assez intéressant).


Sujet

Un exemple de sujet de TP basé sur ce genre de manip est téléchargeable ici, en pdf (bien entendu sous licence CC) :

Creative Commons License
This work is in the Public Domain.

le sujet du TP en pdf

Encore une fois, d’autres outils ont un mode tortue, et la même chose peut être faite aussi sous Scratch...


Commentaires