Jolygones auto-tangents

Rencontre en analyse géométrie et codage
dimanche 15 juillet 2018
par  Yves MARTIN

Les jolygones se codent très simplement avec Scratch ou Blockly. On s’intéresse ici au cas particuliers où les sommets de cette figure appartiennent, à partir d’un certain rang, à ses branches antérieures . Les jolygones ayant deux paramètres, un angle et un coefficient de réduction, la contrainte peut être réalisée sur le coefficient, ou sur l’angle. Dans ce second cas, on peut se donner un paramètre supplémentaire, le rang du premier sommet qui revient sur le premier segment. Dans le premier cas il y a en général une solution, alors que dans le second, il y a généralement deux solutions, et même parfois trois.

Les plus anciens des lecteurs - s’il y en a - peuvent se souvenir du Petit Archimède, revue des années 70-80 où l’on faisait, entre autre, de l’algorithmique avant que nous ayons des ordinateurs personnels. C’était donc de l’informatique débranchée avant l’heure, avant même l’informatique au collège. Dans le numéro 14 (PDF), de 1975, on présente les polygones ainsi :

Nous allons nous amuser à chercher des cas particuliers intéressants. Cela n’aura pas d’utilisation directe en classe (à part les jolygones de base), mais éventuellement en formation des enseignants pour illustrer la possibilité de se poser de nouvelles questions quand la géométrie dynamique rencontre le codage.

Le travail que nous proposons sur les nombres complexes et l’analyse pourrait avoir une utilisation en lycée, si les nombres complexes, dans leur rapport à la géométrie, reviennent dans les programmes. Ce n’est pas impossible car la trace d’une tortue est naturellement une somme de nombres complexes et cela permet une étude intéressante comme nous allons à nouveau le montrer ici.

La dernière partie de cet article est plus technique, et n’intéressera pas tous les lecteurs. Cette figure va en effet être l’occasion de détailler l’insertion des cases à cocher et des pop up dans DGPad, fonctionnalité présente depuis longtemps mais finalement peu documentée.

Bien entendu, tout ce qui est proposé ici serait réalisable avec les séquences de GeoGebra. On a choisi ici d’illustrer une nouvelle fois la rencontre entre la géométrie et le codage « par bloc » comme le propose DGPad.

1. Un peu de code ... et de géométrie

En appliquant l’organigramme précédent, avec la programmation par bloc, en utilisant deux curseurs (celui sur la longueur n’est qu’un zoom), on peut écrire tout simplement :

Figure à manipuler dans l’article (et présentation avec les complexes)


Explorations

On peut faire observer aux élèves que si l’angle est un diviseur de 360, les côtés du jolygone sont parallèles : tester 60 ou 72°, mais aussi, faire tester 80° par exemple, diviseur de 720°, soit deux tours.

Dans l’esprit de la suite, observer - même si l’angle se modifie par demi degré - qu’avec le coefficient de l’ouverture de la figure, les angles 62,5° et 70° rendent le jolygone tangent à lui-même au sens où chaque sommet appartient à un segment antérieur (approximativement car les angles ne sont pas continus). Il y a donc deux angles pour même sommet, pour un coefficient donné.

De même pour un angle quelconque, observer que l’on peut choisir un coefficient k pour que le jolygone devienne « auto-tangent ».

Similitude associée au jolygone

C’est ce que nous allons étudier dans la suite. Avant cela, regardons, pour la culture, un exercice classique des Terminales C et E sur les similitudes quand ces sections existaient. En effet les jolygones étaient alors un exercice archétypique sur la recherche du centre d’une similitude directe. En effet, pour un coefficient inférieur à 1, on voit que la trace de la tortue converge vers un point ... c’est le centre d’une similitude associée au jolygone.

Dans la figure suivante, on recouvre la trace de la tortue par une liste de segments construite avec Blockly - ie sans le module tortue - directement par l’application itérée de la similitude de centre O, de rapport k, et d’angle a, comme on le voit dans le code suivant :

Figure de recouvrement par similitude (en manipulation directe dans l’article)


Deux remarques techniques :

Pour 4 itérations il y a 6 éléments dans la liste car il y a d’abord la couleur, puis le point A (p=0, puis les 4 autres points associés aux 4 affixes suivants.

Pour construire le point O, il faut transformer l’unité de la tortue, le pixel en, celle de DGPad. Cela se fait simplement en divisant la valeur de la variable long par le nombre de pixels en une unité, en utilisant l’expression pixel(), collée à la variable, dans une formule. L’affixe du O s’exprime alors ainsi :

On aurait pu utiliser Blockly pour cette expression, mais c’est l’occasion de montrer cette possibilité.

2. Les jolygones contraints : un peu d’analyse

Toujours dans le même repère construit sur le premier segment, l’extrémité de la trace de la tortue, à la (p-1)^{i\grave{e}me} itération est le point d’affixe z_p = \displaystyle \sum_{q=0}^{p-1} k^qe^{iqa} s’écrit aussi \displaystyle \frac{1-k^pe^{ipa}}{1-ke^{ia}}.

Ce point sera sur le premier segment du jolygone si et seulement si l’affixe de z_p est un nombre réel, soit, en multipliant par le conjugué du dénominateur, ssi, après simplification :

sin(a) +k^p sin((p-1)a) - k^{p-1} sin(pa) = 0

2.1. k contraint à angle donné

Ainsi, pour un angle a donné, on peut cherché k<1 solution de cette équation, et pour k donné, on peut chercher une solution a, pour différentes valeurs p qui correspond au segment dont on cherche le contact de l’extrémité avec le premier segment du jolygone.

A priori on cherche le premier segment qui permet ce contact (on évite d’avoir un segment qui coupe et le suivant qui serait « tangent »). La valeur de p est alors facile à construire. La recherche de k peut alors se faire par simple dichotomie. Voici le code standard (pour la fonction, on utilise des variables locales juste pour que l’affichage reste lisible dans l’interface du site).

Remarque : l’utilisation d’un « Tant que » dans une interface qui réagit en temps réel peut poser problème. On reviendra dessus en détail dans la partie d’explication technique. L’idée principale est de remplir ce bloc en le laissant déactivé.

Dans la figure suivante, on choisi ensuite de ne mettre en oeuvre ce coefficient - quand il existe (cas de segments non parallèles) que pour une valeur k>0,9. Voici une copie d’écran de la figure avec le jolygone réalisé pour le k du curseur, et, à droite, quand on choisi (case à cocher) la valeur de k, affichée, pour que le jolygone soit « auto-tangent ».

Explorer la figure en ligne (pour éviter de trop surcharger l’article)

Sur cette figure, on peut conserver la case de k contraint cochée, et modifier l’angle. Le jolygone se modifie en restant auto-tangent.

2.2. Angle contraint à k donné - Présentation

Cette partie est plus intéressante car, pour un coefficient donné, on peut choisir le rang du segment qui va retoucher la première fois le segment de départ. On s’intéresse donc à la cherche d’un angle \theta solution, pour k et p donnés de l’équation

sin(\theta) +k^p sin((p-1)\theta) - k^{p-1} sin(p \theta) = 0

Regardons le tracé de la fonction associée, pour un angle en degré. Explorer cette figure Desmos manipulable en ligne. En voici quelques copies d’écran.

Tout d’abord trois valeurs de p pour la même valeur k=0,973. Quand il y a des solution, la première est - naturellement - aprés 360/p, valeur qui correspondrait à ce que le point de contact soit en A.

Puis, pour une valeur de k plus proche de 1 (k=0,9916), on voit où il y a d’abord deux premières solutions, dans l’environnement de 360/p et deux autres solutions plus loin.

Mais ces deux autres valeurs ne correspondent pas à une première rencontre avec le segment initial comme on le voit ci-dessous : on présente les deux premiers angles solutions (p est arrondi à 3 décimales dans l’illustration) et la quatrième valeur autour de 102°.

2.3. Angle contraint à k donné - Exploration générique du bassin de convergence de la dichotomie

On aurait pu utiliser cette première exploration pour se donner des bornes de dichotomie efficaces, dans des listes par exemple. On a choisi ici de réaliser une programmation plus générale où l’on cherche soi-même des bornes effectives des bassins de convergence pour les deux premières solutions.

La différence par rapport au code précédent est que, pour le premier angle, on cherche la borne supérieure de l’intervalle dans lequel on va appliquer la dichotomie. Si on ne la trouve pas c’est qu’il n’y a pas de solution :

Alors que pour la cherche du second angle, on sait qu’il existe, si le premier existe. On effectue donc, pour la borne supérieure, une itération à partir de la premier solution. Les deux fonctions Choix de b et Choix2 de b sont quasi identiques avec une inégalité opposée sur la valeur de la fonction g. On aurait pu prendre la même fonction avec un paramètre.

Voici une illustration de la figure finalisée pour le cas p=6

On aura remarqué que le second angle n’est pas calculé pour p=4. Pourtant en général il existe, mais assez loin de la première valeur. Dans la figure en ligne proposée ci-dessous, on peut vérifier cette exploration sur le second angle, ou modifier la fonction b2 du code pour qu’elle trouve cette seconde solution pour p=4

La figure DGPad

Manipuler la figure en ligne associée.

On peut donc choisir le type de contrainte dans un pop up menu (aucune, k, ou a) et pour la contrainte sur l’angle, choisir dans un autre pop up le paramètre p, et choisir enfin d’afficher la trace de la tortue pour la première ou la seconde solution de l’angle.

On a laissé les expressions aTgt et aTg2 visible pour que les plus curieux des lecteurs puisse rentrer dans le code Blockly qui les calcule, et éventuellement le modifier.

Dans la partie suivante, on revient plus en détail sur la façon dont sont réalisés dans DGPad ces pop up menus et autres détails techniques autour de la gestion des booléens : le logiciel étant à l’origine réalisé pour tablette tout est un peu caché à l’intérieur de l’interface. Les figures sont téléchargeables en fin d’article.

3. La mise en œuvre technique dans DGPad

Cette partie est développée en trois parties :
- les pop up et cases à cocher dans les widgets
- détail de la gestion associée des booléens
- traitement spécifique du « Tant que ».

La partie widgets

1. Les balises div et span

Dans un widget, on peut mettre pratiquement tout ce que l’on veux (HTML et LaTeX). On commence en général par une balise div que l’on modifie, en général, par des balises span. Voici le texte du début du widget de la dernière figure :

A titre personnel, je n’ai jamais utilisé les 3 icones dema gauche. Je préfère avoir une bibliothèque de balises toutes prêtes (en mode texte) que je copie colle (pas avec Cmd-C / Cmd-V désactivés mais par clic droit sur ordinateur) dans le code du widget ... d’où souvent les mêmes couleurs par exemple dans mes figures.

2. Les pop-up et les cases à cocher

Ces deux outils sont liés à des expressions - pour la valeur du choix. Commencer par créer ces expressions (ch pour le choix de type de jolygone, et cha2 pour le choix du second angle dans la contrainte sur les angles. Ensuite le code est très simple, c’est du HTML. Voici les exemples pour cette même figure.

Attention : il faut changer d’outil du tableau de bord pour fermer un widget, et surtout ne pas utiliser la croix en haut à droite qui correspond à la suppression complète du widget.

Retour à la barre d’onglets.

Gestion directe des booléens

Le code associé à la trace de la tortue (code en A) entre la première figure - de base - et la quatrième figure - avec toutes les options des contraintes - ne varie que sur les deux variables associée au coefficient de réduction (de k à kc - pour k contraint) et pour l’angle de rotation de la tortue, de a à ac2 - pour angle contraint avec la seconde valeur possible) :

Expression booléenne de kc

On a noté kTgt, la valeur, calculée par dichotomie, du coefficient de réduction pour que le jolygone ait ses sommets sur des côtés antérieurs. Le code de l’expression de kTgt a été présentée dans la partie précédente.

Nous voyons ici comment exprimer la valeur kc en fonction des nombreuses contraintes retenues : le coefficient vaut la valeur k du curseur si le choix (du pop up) n’est pas le cas k contraint (non ch=1), d’où ch==0 || ch==2, ou s’il n’existe pas une valeur de k contrainte si ch=1, (|| kTgt==0) , et si l’angle est inférieur ou égal à 97° (|| a>97.5 car le curseur est réglé en pas demi entier). Et bien entendu, kc est égal à kTgt, dans le cas contraire, ce qui s’écrit :

Les expressions ac et ac2 selon les différents choix

On a d’abord une expression ac qui choisit entre l’angle a du curseur et la valeur contrainte aTgt qui correspond au choix de la première valeur de l’angle pour un angle contraint.

Puis dans l’expression ac2 - qui est utilisée dans la trace - on fait le bilan final entre la valeur renvoyée par ac qui prend la valeur a ou aTgt et la valeur aTg2 qui correspond au second angle possible pour le choix contraint de l’angle.

En pratique on peut donc écrire, respectivement pour ac et ac2 les expression logiques suivantes :

Retour à la barre d’onglets.

Utiliser le « Tant que » dans Blockly

Le fait que le code Blockly réagit en temps réel nécessite de prendre des précautions pour utiliser une boucle Tant que. Il y a deux façons de le faire sans difficulté.

1. En laissant le bloc Tant que actif

On peut utiliser le bloc actif en lui mettant une condition toujours fausse. Voici un exemple sur aTgt. On voit qu’il n’y a qu’un trait de tracé, et quand on place le bloc correct, le tracé se met à jour.

2. Ce qu’il ne faut surtout pas faire

Il ne faut surtout pas remplir la condition du Tant que pas à pas, par exemple en commençant par placer le bloc de comparaison et tenter de le remplir : cela bloque DGPad à coup sûr !

La démarche à retenir : comme dans la partie 1, on prépare à part un bloc logique toujours faux, que l’on place dans la condition, puis on prépare à côté la bonne expression que l’on glisse, une fois finalisée, à la place de la précédente.

3. Avec le bloc désactivé

C’est un peu moins confortable à travailler (pour la visibilité), mais garanti sans problème technique. Comme on le voit ici, on ne peux pas rendre « actifs » les blocs intérieurs au « tant que ».

Retour à la barre d’onglets.

4. Téléchargements associés

4.1. Le logiciel DGPad et autres travaux de Eric Hakenholz

Il s’utilise en webApp sur toute plateforme avec l’adresse (en https) : https://www.dgpad.net/index.php
Avec cette adresse, vous pouvez glisser les figures téléchargées (en .dgp sur Mac) directement sur la fenêtre. Le site du logiciel.

Présentation par l’auteur, Eric Hakenholz. Voir sa chaine youtube).

DGPad existe aussi pour iOS et Androïd que l’on trouve sur les sites de téléchargement de GooglePlay et App Store.

Le logiciel a aussi été développé en application native sous Mac OS et Linux
DGPad sous mac : http://docs.dgpad.net/downloads/macos/dgpad_install.dmg

DGPad sous Linux (distribution Débian) : http://goo.gl/jUbwPn

Le blog de Patrice Debrabant sur CarMetal et DGPad : carmetal.org pour des informations récentes.

Un nouveau site de Eric Hakenholz (mai 2018) en mode adaptatif (reponsive design) : matpad (sans le h) : https://sites.google.com/view/matpad d’utilisation de DGPad en collège, a priori sur tablette mais pas nécessairement.

Eric a aussi développé des outils de facilitation de récupérations automatiques de travaux d’élèves sur tableur, DGPad, Snap et, désormais, sur Scratch 3.0 : voir ses DocTools.

4.2. télécharger les figures de cet article

Décompresser le zip et glisser les figures sur la webApp par exemple.

Zip - 21.9 ko


4.3. Autres exemples d’utilisation des nombres complexes pour la trace de la tortue

Dans cet article on a utilisé que le jolygone retouchait un segment précédent si le nombre complexe représentant l’extrémité de la trace de la tortue avait une partie imaginaire nulle.

Le changement de cadre de la trace de la tortue en somme de nombres complexes est particulièrement riche. Il peut être utilisé pour des preuves - et des développements plus fins - comme dans cet exercice initial de 5° sous Scratch.

Il peut surtout être utilisé pour réaliser des constructions dynamiques complexes comme dans le cas des spirolatères dynamiques . Voir la barre d’onglets 4 de cet article.

.


Commentaires

Annonces

Prochains rendez-vous de l’IREM

Séminaire EDIM-IREM

- Mercredi 13 février 2019, 14h-18h, campus du Tampon.
- Mercredi 6 mars 2019, 14h-18h, PTU, Saint-Denis, salle S23.6.
- Mercredi 10 avril 2019, 14h-18h, campus du Tampon.

Colloque EDIM-IREM

- Mercredi 5 juin 2019, 9h-12h et 14h-17h, Saint-Denis.

Fête de la science

- Du 10 au 18 novembre 2018. Thème : « Idées reçues ».

Semaine des mathématiques et congrès MATh.en.JEANS

- Du 25 au 31 mars 2019. Thème : « Jouons ensemble aux mathématiques ».


Brèves

Notation au bac

lundi 11 décembre 2017

Une nouvelle notation sera pratiquée à partir de la session 2018 pour les algorithmes au bac. Elle est décrite avec de nombreux exemples, ici.

Décès de Roger Mohr

mardi 27 juin 2017

On sait bien que Nicolas Bourbaki n’était pas le nom d’une personne mais le pseudonyme d’un groupe. L’équivalent en informatique théorique est Claude Livercy, auteur de la théorie des programmes. Roger Mohr était un des membres de Claude Livercy.

À travers les labyrinthes : algorithmes et fourmis

dimanche 1er septembre 2013

Quand les chercheurs mettent au point des modèles d’optimisation et de recherche de plus court chemin qui s’inspirent du comportement de masse de colonies de fourmis...
À écouter : Sur les Épaules de Darwin, émission diffusée sur France Inter samedi 31 août 2013.

Rencontres Mondiales du Logiciel Libre à St-Joseph

mardi 20 août 2013

Les RMLLd se dérouleront pour la 2e fois à Saint-Joseph du 22 au 25 août.
C’est une opportunité pour les élèves qui suivent la spécialité ISN et les passionnés d’informatique.

Voici pour le samedi et le dimanche quelques interventions choisies :
- http://2013.d.rmll.info/Raspberry-votre-ordinateur-au-format-carte-de-credit?lang=fr
- http://2013.d.rmll.info/Materiel-libre-et-DIY?lang=fr
- http://2013.d.rmll.info/Arduino-de-l-electronique-libre?lang=fr

Noter aussi les conférences Art et Culture du dimanche, ainsi qu’une conférence plus engagée.

Le programme complet se trouve ici. Une radio sera ouverte pour l’occasion.
Des plaquettes à distribuer se trouvent ici.

Hyper-vidéos pour l’algorithmique au lycée

dimanche 19 août 2012

Olivier Roizès, à la demande de l’ADIREM, a réalisé une collection d’hyper-vidéos de présentation de logiciels et environnements de programmation. Ces hyper-vidéos, c’est-à-dire des vidéos contenant des éléments clicables, devraient être utiles aux enseignants désireux de se familiariser avec Python, CaRMetal, R, Rurple, Scilab ou Xcas.

Ouverture du SILO

mardi 1er novembre 2011

Le SILO (Science Informatique au Lycée : Oui !) est un espace collaboratif documentaire de partage et de formation collégiale, à destination des professeurs appelés à enseigner l’informatique au lycée.

Une initiative du CNDP, de l’INRIA et de Pasc@line, à laquelle se sont associés SPECIF, fuscia, EPI et ePrep.

Sur le Web : Site du SILO

Introduction à la science informatique

lundi 12 septembre 2011

Le CRDP de Paris publie le premier ouvrage destiné aux professeurs chargés d’enseigner la nouvelle spécialité « Informatique et sciences du numérique » en Terminale S à la rentrée 2012. Cet ouvrage a été coordonné par Gilles Dowek, directeur de recherche à l’INRIA.

Sur la création de la spécialité ISN, on pourra également consulter l’interview donnée au Café pédagogique par l’inspecteur général Robert Cabanne.

Sur le Web : CRDP de Paris

Deux publications sur l’algorithmique

samedi 17 octobre 2009

L’IREM d’Aix-Marseille publie une brochure de 73 pages, téléchargeable librement, intitulée Algorithmes et logique au lycée. Ces notions sont illustrées et déclinées sur des exercices du programme de spécialité mathématique en série L, mais sont adaptables aux programmes à venir.

Le hors série thématique n° 37 du magazine Tangente, disponible actuellement en kiosque, s’intitule « Les algorithmes. Au cœur du raisonnement structuré ». Extrait de l’éditorial : « La rédaction de Tangente a conçu la quasi-totalité de ce hors série thématique pour qu’il puisse être lu par des élèves de Seconde ».

Une carte mentale pour l’algorithmique

jeudi 10 septembre 2009

Sur son site, Jean-Jacques Dhénin a publié une carte mentale géante qui renvoie vers plus de 30 documents en ligne sur l’algorithmique. Tout ce qu’il faut — et même davantage — pour faire face au nouveau programme de Seconde !

Un catalogue libre d’algorithmes pour le lycée

dimanche 30 août 2009

Guillaume Connan, de l’IREM de Nantes, publie un catalogue libre de 119 pages d’algorithmes pour le lycée. Sur son site très riche, on trouvera d’autres documents en rapport avec l’algorithmique, notamment sur l’utilisation des langages fonctionnels au lycée et sur la comparaison programmation fonctionnelle/programmation impérative.

Statistiques

Dernière mise à jour

mercredi 5 décembre 2018

Publication

801 Articles
Aucun album photo
138 Brèves
11 Sites Web
141 Auteurs

Visites

76 aujourd'hui
997 hier
2590113 depuis le début
11 visiteurs actuellement connectés