Dr. Geo est un environnement libre de géométrie interactive et de programmation. Il est aussi bien destiné à un public jeune de l'école primaire ou du secondaire I, qu'à des plus grands pour expérimenter la géométrie et/ou la programmation. Il est propulsé par l'environnement de développement dynamique Pharo, supporté par l'INRIA/RMOD.
Cette version apporte quelques fonctions supplémentaires mais surtout plusieurs correctifs dans l'utilisation des figures programmées.
Dr. Geo est donc plus sûr dans la conception de figures interactives codées. Lorsque conçues de façon itératives, ces figures comptent plusieurs milliers d'objets.
Quelques exemples de figures programmées
Les échantillons sont présentés avec le code source et son résultat après exécution du code. Les constructions sont toutes récursives et les figures obtenues sont déformables interactivement.
Fractale de Koch
| canvas koch |
canvas := DrGeoCanvas new fullscreen.
koch := [ ].
koch := [ :a :b :k | |ab c d v |
k > 0 ifTrue: [
ab := (canvas segment: a to: b) hide.
c := (canvas pointOnCurve: ab at: 1 / 3) hide.
d := (canvas pointOnCurve: ab at: 2 / 3) hide.
v := (canvas
altIntersectionOf: (canvas perpendicularBisector: ab) hide
and: (canvas circleCenter: c to: d) hide) hide.
koch value: a value: c value: k - 1.
koch value: c value: v value: k - 1.
koch value: v value: d value: k - 1.
koch value: d value: b value: k - 1].
canvas segment: a to: b].
koch
value: ((canvas point: -8@3) name: 'A')
value: ((canvas point: 8@3) name: 'B')
value: 5
Spirale de Fibonacci
|canvas shape alfa fibo a b m s|
canvas := DrGeoCanvas new fullscreen.
alfa := (canvas freeValue: -90 degreesToRadians) hide.
shape := [:c :o :f| | e p |
e := (canvas rotate: o center: c angle: alfa) hide.
(canvas arcCenter: c from: o to: e) large.
p := canvas translate: e vector: (canvas vector: c to: o) hide.
(canvas polygon: { c. o. p hide. e }) name: f.
e].
fibo := [ ].
fibo := [ :f :o :c :k | | e f1 f2 f3|
"f1: term Fn-1, f2: term Fn, o & c: origin and center of spiral arm
e: extremity of the spiral arm"
f1 := f first.
f2 := f second.
f3 := f1 + f2.
e := shape value: c value: o value: f2.
c := (canvas scale: c center: e factor: f3 / f2) hide.
k > 0 ifTrue: [
fibo value: {f2. f3} value: e value: c value: k - 1 ]].
a := canvas point: 1@0.
b := canvas point: -1 @0.
m := (canvas middleOf: a and: b) hide.
s := shape value: m value: a value: 1.
shape value: m value: s value: 1.
fibo value: {1. 2} value: b value: a value: 10
Sierpinski dragon
| canvas dragon rec|
canvas := DrGeoCanvas new fullscreen.
dragon := [ ].
dragon := [ :a :b :k | | c m n |
k > 0 ifTrue: [
c := canvas
altIntersectionOf: (canvas circleCenter: a to: b) hide
and: (canvas circleCenter: b to: a) hide.
c hide.
m := (canvas middleOf: a and: c) hide.
n := (canvas middleOf: b and: c) hide.
dragon value: m value: a value: k - 1.
dragon value: m value: n value: k - 1.
dragon value: b value: n value: k - 1].
k = 0 ifTrue: [ canvas segment: a to: b ].
].
rec := 5.
canvas text: 'Sierpinski Dragon, recursion: ', rec printString at: 0@0.
dragon value: (canvas point: -4@1.5) value: (canvas point: 4@1.5) value: rec
Branches
| canvas branch alfa beta gamma delta|
canvas := DrGeoCanvas new fullscreen.
alfa := (canvas freeValue: 135 degreesToRadians) hide.
beta := (canvas freeValue: 202.5 degreesToRadians) hide.
gamma := (canvas freeValue: 68.5 degreesToRadians ) hide.
delta := (canvas freeValue: 157.5 degreesToRadians ) hide.
branch := [ ].
branch := [ :a :b :k | | m am mb c d e bc cd de f g h bf fg gh |
m := (canvas middleOf: a and: b) hide.
am := canvas segment: a to: m.
mb := canvas segment: m to: b.
""
c := (canvas rotate: m center: b angle: alfa) hide.
d := (canvas rotate: b center: c angle: beta) hide.
e := (canvas rotate: c center: d angle: beta) hide.
bc := canvas segment: b to: c.
cd := canvas segment: c to: d.
de := canvas segment: d to: e.
""
f := (canvas rotate: c center: b angle: gamma) hide.
g := (canvas rotate: b center: f angle: delta) hide.
h := (canvas rotate: f center: g angle: delta) hide.
bf := canvas segment: b to: f.
fg := canvas segment: f to: g.
gh := canvas segment: g to: h.
k > 0 ifTrue: [
branch value: a value: m value: k - 1.
branch value: m value: b value: k - 1.
branch value: b value: c value: k - 1.
branch value: c value: d value: k - 1.
branch value: d value: e value: k - 1.
branch value: b value: f value: k - 1.
branch value: f value: g value: k - 1.
branch value: g value: h value: k - 1.
]
].
branch value: (canvas point: 0 @ -2) value: (canvas point: 0 @ 1) value: 3
Aller plus loin
- Dr. Geo (228 clics)
- Modifications (85 clics)
- Spirale de Fibonacci (190 clics)
- Aide et documentation (87 clics)
# destiné à un public jeune de l'école primaire
Posté par idéefixe . Évalué à 2. Dernière modification le 26 mars 2016 à 13:17.
Tiens, je ne vois pas Dr. Geo dans la logithèque de PrimTux !
[^] # Re: destiné à un public jeune de l'école primaire
Posté par Fernandes Hilaire (site web personnel) . Évalué à 2.
Ce serait un bel ajout.
[^] # Re: destiné à un public jeune de l'école primaire
Posté par idéefixe . Évalué à 3.
Sur le Tableau dynamique Logiciels Éducatifs Libres Dr Geo est conseillé à partir du collège.
[^] # Re: destiné à un public jeune de l'école primaire
Posté par Fernandes Hilaire (site web personnel) . Évalué à 2.
Il est vrai que le site de Dr. Geo n'est pas très loquasse sur ce sujet. Ce serait toutefois bien de corriger l'information dans le tableau.
Pour plus d'éléments, lire :
- La dépêche précédente de la version 15.12
- Travail en cours de prospective.
Pour résumer, pour l'école primaire, avec Dr. Geo on peut :
- utiliser les outils de construction de base
- adapter l'interface en proposant des figures avec uniquement quelques outils
- préparer des figures "intelligentes" où l'élève doit répondre à un challenge (construire des formes données, …). On utilise pour ça les scripts Smalltalk.
[^] # Re: destiné à un public jeune de l'école primaire
Posté par idéefixe . Évalué à 2.
J'ai modifié le tableau en mettant Oui pour l'école primaire.
[^] # Re: destiné à un public jeune de l'école primaire
Posté par Fernandes Hilaire (site web personnel) . Évalué à 2.
Super. Merci.
[^] # Re: destiné à un public jeune de l'école primaire
Posté par idéefixe . Évalué à 2.
Dr.Geo est ajouté au dépôt PrumTux. :-)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.