On constate que la nouvelle vue a remis le smiley droit : c'est normal, la rotation de la
vue (−20°) compense exactement la rotation du smiley sur la scène (+20°). Si on
s'amuse à déplacer le smiley sur la première vue, on voit que la seconde vue est mise à
jour automatiquement et immédiatement. Le déplacement du smiley peut aussi être
opéré sur la deuxième vue : la première vue se redessine similairement. On voit donc
bien à l'œuvre le principe de séparation modèle-vue : on met à jour la scène par une
manipulation sur une vue et toutes les vues se rafraîchissent automatiquement… sans
rien avoir à programmer !
Pour continuer la démonstration, on va créer à la volée quatre vues, qui font chacune
une transformation aléatoire de la scène. À cette fin, on va combiner la méthode
rotate(angle) déjà vue à la nouvelle méthode scale(fx,fy) : cette méthode fait un
agrandissement d'un facteur fx horizontal et d'un facteur fy vertical. Selon que le
facteur donné est plus grand ou plus petit que 1, on fait respectivement un
agrandissement ou un rétrécissement. Cette fonction est bien entendu très utile pour
réaliser des zooms, pour lesquels on choisira fx = fy ; si cette égalité n'est pas
210
vue (−20°) compense exactement la rotation du smiley sur la scène (+20°). Si on
s'amuse à déplacer le smiley sur la première vue, on voit que la seconde vue est mise à
jour automatiquement et immédiatement. Le déplacement du smiley peut aussi être
opéré sur la deuxième vue : la première vue se redessine similairement. On voit donc
bien à l'œuvre le principe de séparation modèle-vue : on met à jour la scène par une
manipulation sur une vue et toutes les vues se rafraîchissent automatiquement… sans
rien avoir à programmer !
Pour continuer la démonstration, on va créer à la volée quatre vues, qui font chacune
une transformation aléatoire de la scène. À cette fin, on va combiner la méthode
rotate(angle) déjà vue à la nouvelle méthode scale(fx,fy) : cette méthode fait un
agrandissement d'un facteur fx horizontal et d'un facteur fy vertical. Selon que le
facteur donné est plus grand ou plus petit que 1, on fait respectivement un
agrandissement ou un rétrécissement. Cette fonction est bien entendu très utile pour
réaliser des zooms, pour lesquels on choisira fx = fy ; si cette égalité n'est pas
210
