Pour illustrer l’utilisation des Figures Smalltalk Dr.Geo, nous vous proposons une petite série d’exemples. Ceux-ci vous montrent leurs importantes possibilités et nous espérons qu’ils seront également une source d’inspiration. Pour chacun de ces exemples, nous donnons le code source Smalltalk de la figure puis son résultat. Le code source doit être copié dans un éditeur de figure Smalltalk puis exécuté.
Ces exemples s’appuient sur la gestion du temps et celle des processus programmés en Smalltalk.
Un premier exemple simple pour comprendre le principe :
| figure p pause | figure:=DrGeoFigure nouveau. p := figure point: 0@0. pause := Delay forSeconds: 0.2. figure faire: [ 100 foisRépéter: [ p déplacerA: (p coordonnées + (0.1@0)). figure actualiser. pause wait]]
Un deuxième exemple avec une figure plus élaborée :
| figure s r u pause | figure := DrGeoFigure nouveau. s := figure segmentDe: 0@ -1 à: 4@ -1. r := figure pointSurLigne: s à: 0.8. s := figure segmentDe: 0@0 à: 0@1. u := figure pointSurLigne: s à: 0.7. u rond petit; couleur: Color blue. 1 à: 100 faire: [:n| u := figure point: [:parents| |y t| y := parents first y. t := parents second x. (n / 5) @ t * y * (1 - y)] parents: {u . r}. u rond petit; couleur: Color blue]. pause := Delay forSeconds: 0.1. figure faire: [ 0 à: 1 par: 0.05 faire: [:x | r mathItem setCurveAbscissa: x. figure actualiser. pause wait]]
Cet exemple s’appuie largement sur un bloc de code récursif.
| triangle c | c := DrGeoFigure nouveau. triangle := []. triangle := [:s1 :s2 :s3 :n | c segmentDe: s1 à: s2; segmentDe: s2 à: s3; segmentDe: s3 à: s1. n >0 ifTrue: [triangle valeur: s1 valeur: (c milieuDe: s1 et: s2) cacher valeur: (c milieuDe: s1 et: s3) cacher valeur: n-1. triangle valeur: (c milieuDe: s1 et: s2) cacher valeur: s2 valeur: (c milieuDe: s2 et: s3) cacher valeur: n-1. triangle value: (c milieuDe: s1 et: s3) cacher value: (c milieuDe: s2 et: s3) cacher value: s3 value: n-1.]]. triangle valeur: 0@3 valeur: 4@ -3 valeur: -4@ -3 valeur: 3. (c point: 0@3) montrer