Previous: , Up: Figure Smalltalk   [Index]


7.3 Galerie d’exemples de figures Smalltalk

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 espace de travail (...Clic arrière-plan → Outils → Espace de travail...) puis exécuté.

Animer une figure

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:=DrGeoSketch new.
p := figure point: 0@0.
pause := Delay forSeconds: 0.2.
figure do: [ 
   100 timesRepeat: [
      p mathItem moveTo: (p mathItem point + (0.1@0)).
      figure update.
      pause wait]]

Un deuxième exemple avec une figure plus élaborée :

| figure s r u pause |
figure := DrGeoSketch new fullscreen.
s := figure segment: 0@ -1 to: 4@ -1.
r := figure pointOnCurve: s at: 0.8.
s := figure segment: 0@0 to: 0@1.
u := figure pointOnCurve: s at: 0.7.
u round small; color: Color blue.
1 to: 100 do: [:n|
   u := figure 
      point: [:parents| |y t|
         y := parents first point y.
         t := parents second point x.
         (n / 5) @ t * y * (1 - y)] 
      parents:  {u . r}.
   u round small; color: Color blue].
pause := Delay forSeconds: 0.1.
figure do: [
   0 to: 1 by: 0.05 do: [:x | 
      r mathItem setCurveAbscissa: x.
      figure update.
      pause wait]]

Triangle de Sierpinski

Cet exemple s’appuie largement sur un bloc de code récursif.

| triangle c |
c := DrGeoSketch new.
triangle := [].

triangle := [:s1 :s2 :s3 :n |
    c segment: s1 to: s2;
        segment: s2 to: s3;
        segment: s3 to: s1.
    n >0 ifTrue:
        [triangle
            value: s1
            value: (c middleOf: s1 and: s2) hide
            value: (c middleOf: s1 and: s3) hide
            value: n-1.
        triangle
            value: (c middleOf: s1 and: s2) hide
            value: s2
            value: (c middleOf: s2 and: s3) hide
            value: n-1.
        triangle
            value: (c middleOf: s1 and: s3) hide
            value: (c middleOf: s2 and: s3) hide
            value: s3
            value: n-1.]].
triangle value: 0@3 value:  4@ -3 value: -4@ -3 value: 3.
(c point: 0@3) show
fig59

Figure 7.1: Triangle de Sierpinski


Previous: , Up: Figure Smalltalk   [Index]